run-network-tests.yml 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. name: run-network-tests
  2. on:
  3. pull_request:
  4. types: [opened, synchronize]
  5. workflow_dispatch:
  6. # TODO: add an input so dispatcher can specify a list of tests to run,
  7. # composed of the job ids separated by `:`
  8. # for eg.
  9. # 'network_tests_1:network_tests_3'
  10. # 'network_tests_2'
  11. # inputs:
  12. # test_to_run:
  13. # description: 'Tests to run'
  14. # required: false
  15. # default: 'all'
  16. jobs:
  17. build_images:
  18. name: Build joystream/node
  19. runs-on: ubuntu-latest
  20. outputs:
  21. use_artifact: ${{ steps.compute_shasum.outputs.shasum }}-joystream-node-docker-image.tar.gz
  22. steps:
  23. - uses: actions/checkout@v1
  24. - uses: actions/setup-node@v1
  25. with:
  26. node-version: '14.x'
  27. - id: compute_shasum
  28. name: Compute runtime code shasum
  29. run: |
  30. export RUNTIME_CODE_SHASUM=`scripts/runtime-code-shasum.sh`
  31. echo "::set-output name=shasum::${RUNTIME_CODE_SHASUM}"
  32. - name: Setup cache directory
  33. run: mkdir ~/docker-images
  34. - name: Cache docker images
  35. uses: actions/cache@v2
  36. env:
  37. cache-name: joystream-node-docker
  38. with:
  39. path: ~/docker-images
  40. key: ${{ env.cache-name }}-${{ steps.compute_shasum.outputs.shasum }}
  41. - name: Check if we have cached image
  42. continue-on-error: true
  43. run: |
  44. if [ -f ~/docker-images/joystream-node-docker-image.tar.gz ]; then
  45. docker load --input ~/docker-images/joystream-node-docker-image.tar.gz
  46. cp ~/docker-images/joystream-node-docker-image.tar.gz .
  47. fi
  48. - name: Check if we have pre-built image on Dockerhub
  49. continue-on-error: true
  50. run: |
  51. if ! [ -f joystream-node-docker-image.tar.gz ]; then
  52. docker pull joystream/node:${{ steps.compute_shasum.outputs.shasum }}
  53. docker image tag joystream/node:${{ steps.compute_shasum.outputs.shasum }} joystream/node:latest
  54. docker save --output joystream-node-docker-image.tar joystream/node:latest
  55. gzip joystream-node-docker-image.tar
  56. cp joystream-node-docker-image.tar.gz ~/docker-images/
  57. fi
  58. - name: Build new joystream/node image
  59. run: |
  60. if ! [ -f joystream-node-docker-image.tar.gz ]; then
  61. docker build . --file joystream-node.Dockerfile --tag joystream/node
  62. docker save --output joystream-node-docker-image.tar joystream/node
  63. gzip joystream-node-docker-image.tar
  64. cp joystream-node-docker-image.tar.gz ~/docker-images/
  65. fi
  66. - name: Save joystream/node image to Artifacts
  67. uses: actions/upload-artifact@v2
  68. with:
  69. name: ${{ steps.compute_shasum.outputs.shasum }}-joystream-node-docker-image.tar.gz
  70. path: joystream-node-docker-image.tar.gz
  71. basic_runtime_with_upgrade:
  72. # if: ${{ false }}
  73. name: Integration Tests (Runtime Upgrade)
  74. needs: build_images
  75. runs-on: ubuntu-latest
  76. steps:
  77. - uses: actions/checkout@v1
  78. - uses: actions/setup-node@v1
  79. with:
  80. node-version: '14.x'
  81. - name: Get artifacts
  82. uses: actions/download-artifact@v2
  83. with:
  84. name: ${{ needs.build_images.outputs.use_artifact }}
  85. - name: Install artifacts
  86. run: |
  87. docker load --input joystream-node-docker-image.tar.gz
  88. docker images
  89. - name: Install packages and dependencies
  90. run: |
  91. yarn install --frozen-lockfile
  92. yarn workspace @joystream/types build
  93. yarn workspace @joystream/metadata-protobuf build
  94. yarn workspace @joystream/cli build
  95. - name: Ensure tests are runnable
  96. run: yarn workspace network-tests build
  97. - name: Install joystream-cli @joystream/cli/0.5.1
  98. run: npm -g install @joystream/cli
  99. - name: Execute network tests
  100. run: |
  101. export HOME=${PWD}
  102. mkdir -p ${HOME}/.local/share/joystream-cli
  103. joystream-cli api:setUri ws://localhost:9944
  104. export RUNTIME=sumer
  105. export TARGET_RUNTIME_TAG=latest
  106. tests/network-tests/run-migration-tests.sh
  107. basic_runtime:
  108. name: Integration Tests (New Chain)
  109. needs: build_images
  110. runs-on: ubuntu-latest
  111. steps:
  112. - uses: actions/checkout@v1
  113. - uses: actions/setup-node@v1
  114. with:
  115. node-version: '14.x'
  116. - name: Get artifacts
  117. uses: actions/download-artifact@v2
  118. with:
  119. name: ${{ needs.build_images.outputs.use_artifact }}
  120. - name: Install artifacts
  121. run: |
  122. docker load --input joystream-node-docker-image.tar.gz
  123. docker images
  124. - name: Install packages and dependencies
  125. run: |
  126. yarn install --frozen-lockfile
  127. yarn workspace @joystream/types build
  128. yarn workspace @joystream/metadata-protobuf build
  129. yarn workspace @joystream/cli build
  130. - name: Ensure tests are runnable
  131. run: yarn workspace network-tests build
  132. - name: Execute network tests
  133. run: |
  134. export RUNTIME=latest
  135. tests/network-tests/run-full-tests.sh
  136. new_chain_setup:
  137. name: Initialize new chain
  138. needs: build_images
  139. runs-on: ubuntu-latest
  140. steps:
  141. - uses: actions/checkout@v1
  142. - uses: actions/setup-node@v1
  143. with:
  144. node-version: '14.x'
  145. - name: Get artifacts
  146. uses: actions/download-artifact@v2
  147. with:
  148. name: ${{ needs.build_images.outputs.use_artifact }}
  149. - name: Install artifacts
  150. run: |
  151. docker load --input joystream-node-docker-image.tar.gz
  152. docker images
  153. - name: Install packages and dependencies
  154. run: |
  155. yarn install --frozen-lockfile
  156. yarn workspace @joystream/types build
  157. yarn workspace @joystream/metadata-protobuf build
  158. yarn workspace @joystream/cli build
  159. - name: Ensure query-node builds
  160. run: yarn workspace query-node-root build
  161. - name: Ensure tests are runnable
  162. run: yarn workspace network-tests build
  163. # Bring up hydra query-node development instance, then run content directory
  164. # integration tests
  165. - name: Execute Tests
  166. run: |
  167. export RUNTIME=latest
  168. tests/network-tests/test-setup-new-chain.sh