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 - 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 - 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