123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- name: run-network-tests
- on:
- pull_request:
- types: [opened, synchronize]
- workflow_dispatch:
- # TODO: add an input so dispatcher can specify a list of tests to run,
- # composed of the job ids separated by `:`
- # for eg.
- # 'network_tests_1:network_tests_3'
- # 'network_tests_2'
- # inputs:
- # test_to_run:
- # description: 'Tests to run'
- # required: false
- # default: 'all'
- jobs:
- build_images:
- name: Build joystream/node
- runs-on: ubuntu-latest
- outputs:
- use_artifact: ${{ steps.compute_shasum.outputs.shasum }}-joystream-node-docker-image.tar.gz
- steps:
- - uses: actions/checkout@v1
- - uses: actions/setup-node@v1
- with:
- node-version: '14.x'
- - id: compute_shasum
- name: Compute runtime code shasum
- run: |
- export RUNTIME_CODE_SHASUM=`scripts/runtime-code-shasum.sh`
- echo "::set-output name=shasum::${RUNTIME_CODE_SHASUM}"
- - name: Setup cache directory
- run: mkdir ~/docker-images
- - name: Cache docker images
- uses: actions/cache@v2
- env:
- cache-name: joystream-node-docker
- with:
- path: ~/docker-images
- key: ${{ env.cache-name }}-${{ steps.compute_shasum.outputs.shasum }}
- - name: Check if we have cached image
- continue-on-error: true
- run: |
- if [ -f ~/docker-images/joystream-node-docker-image.tar.gz ]; then
- docker load --input ~/docker-images/joystream-node-docker-image.tar.gz
- cp ~/docker-images/joystream-node-docker-image.tar.gz .
- fi
- - name: Check if we have pre-built image on Dockerhub
- continue-on-error: true
- run: |
- if ! [ -f joystream-node-docker-image.tar.gz ]; then
- docker pull joystream/node:${{ steps.compute_shasum.outputs.shasum }}
- docker image tag joystream/node:${{ steps.compute_shasum.outputs.shasum }} joystream/node:latest
- docker save --output joystream-node-docker-image.tar joystream/node:latest
- gzip joystream-node-docker-image.tar
- cp joystream-node-docker-image.tar.gz ~/docker-images/
- fi
- - name: Build new joystream/node image
- run: |
- if ! [ -f joystream-node-docker-image.tar.gz ]; then
- docker build . --file joystream-node.Dockerfile --tag joystream/node
- docker save --output joystream-node-docker-image.tar joystream/node
- gzip joystream-node-docker-image.tar
- cp joystream-node-docker-image.tar.gz ~/docker-images/
- fi
- - name: Save joystream/node image to Artifacts
- uses: actions/upload-artifact@v2
- with:
- name: ${{ steps.compute_shasum.outputs.shasum }}-joystream-node-docker-image.tar.gz
- path: joystream-node-docker-image.tar.gz
- basic_runtime_with_upgrade:
- # if: ${{ false }}
- name: Integration Tests (Runtime Upgrade)
- needs: build_images
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - uses: actions/setup-node@v1
- with:
- node-version: '14.x'
- - name: Get artifacts
- uses: actions/download-artifact@v2
- with:
- name: ${{ needs.build_images.outputs.use_artifact }}
- - name: Install artifacts
- run: |
- docker load --input joystream-node-docker-image.tar.gz
- docker images
- - name: Install packages and dependencies
- run: |
- yarn install --frozen-lockfile
- yarn workspace @joystream/types build
- yarn workspace @joystream/content-metadata-protobuf build:ts
- - name: Ensure tests are runnable
- run: yarn workspace network-tests build
- - name: Execute network tests
- run: RUNTIME=sumer tests/network-tests/run-tests.sh full
- basic_runtime:
- name: Integration Tests (New Chain)
- needs: build_images
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - uses: actions/setup-node@v1
- with:
- node-version: '14.x'
- - name: Get artifacts
- uses: actions/download-artifact@v2
- with:
- name: ${{ needs.build_images.outputs.use_artifact }}
- - name: Install artifacts
- run: |
- docker load --input joystream-node-docker-image.tar.gz
- docker images
- - name: Install packages and dependencies
- run: |
- yarn install --frozen-lockfile
- yarn workspace @joystream/types build
- yarn workspace @joystream/content-metadata-protobuf build:ts
- - name: Ensure tests are runnable
- run: yarn workspace network-tests build
- - name: Execute network tests
- run: tests/network-tests/run-tests.sh full
- query_node:
- name: Query Node Integration Tests
- needs: build_images
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - uses: actions/setup-node@v1
- with:
- node-version: '14.x'
- - name: Get artifacts
- uses: actions/download-artifact@v2
- with:
- name: ${{ needs.build_images.outputs.use_artifact }}
- - name: Install artifacts
- run: |
- docker load --input joystream-node-docker-image.tar.gz
- docker images
- - name: Install packages and dependencies
- run: |
- yarn install --frozen-lockfile
- yarn workspace @joystream/types build
- yarn workspace @joystream/content-metadata-protobuf build:ts
- - name: Ensure query-node builds
- run: yarn workspace query-node-root build
- - name: Ensure tests are runnable
- run: yarn workspace network-tests build
- # Bring up hydra query-node development instance, then run content directory
- # integration tests
- - name: Execute Tests
- run: |
- docker-compose up -d joystream-node
- query-node/run-tests.sh
- storage_node:
- name: Storage Node Tests
- needs: build_images
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - uses: actions/setup-node@v1
- with:
- node-version: '14.x'
- - name: Get artifacts
- uses: actions/download-artifact@v2
- with:
- name: ${{ needs.build_images.outputs.use_artifact }}
- - name: Install artifacts
- run: |
- docker load --input joystream-node-docker-image.tar.gz
- docker images
- - name: Install packages and dependencies
- run: |
- yarn install --frozen-lockfile
- yarn workspace @joystream/types build
- - name: Build storage node
- run: yarn workspace storage-node build
- - name: Start Services
- run: |
- docker-compose up -d ipfs
- docker-compose up -d joystream-node
- - name: Configure and start development storage node
- run: |
- DEBUG=joystream:* yarn storage-cli dev-init
- docker-compose up -d colossus
- - name: Test uploading
- run: |
- sleep 6
- export DEBUG=joystream:*
- yarn storage-cli upload ./tests/network-tests/assets/joystream.MOV 1 0
- # Wait for storage-node to set status Accepted on uploaded content
- sleep 6
- cd utils/api-scripts/
- # Assume only one accepted data object was created
- CONTENT_ID=`yarn --silent script get-first-content-id | tail -n2 | head -n1`
- yarn storage-cli download ${CONTENT_ID} ./joystream.mov
|