From 3fe954dfcd34f8b590d89bad839bbe2c40719a7e Mon Sep 17 00:00:00 2001 From: Konstantin Astakhov Date: Wed, 26 Oct 2022 13:38:43 +0000 Subject: [PATCH] Rename workflows --- --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -5,7 +5,7 @@ market-e2e-test: name: market e2e tests - uses: ./.github/workflows/market-test_v2.yml + uses: ./.github/workflows/market-test.yml secrets: inherit --- a/.github/workflows/ci-develop.yml +++ b/.github/workflows/ci-develop.yml @@ -16,14 +16,13 @@ # List of a jobs included into Workflow. jobs: - yarn-test-dev: + yarn-dev: if: github.event.pull_request.draft == false # Conditional check for draft per job. - uses: ./.github/workflows/dev-build-tests_v2.yml - + uses: ./.github/workflows/yarn-dev.yml unit-test: if: github.event.pull_request.draft == false # Conditional check for draft per job. - uses: ./.github/workflows/unit-test_v2.yml + uses: ./.github/workflows/unit-test.yml canary: if: ${{ (github.event.pull_request.draft == false && contains( github.event.pull_request.labels.*.name, 'canary')) }} # Conditional check for draft & labels per job. @@ -41,16 +40,12 @@ node-only-update: if: ${{ (github.event.pull_request.draft == false && contains( github.event.pull_request.labels.*.name, 'node-only-update')) }} # Conditional check for draft & labels per job. - uses: ./.github/workflows/node-only-update_v2.yml + uses: ./.github/workflows/node-only-update.yml - parallel_and_sequential_tests: + integration: if: ${{ (github.event.pull_request.draft == false && contains( github.event.pull_request.labels.*.name, 'integration')) }} # Conditional check for draft & labels per job. uses: ./.github/workflows/integration-tests.yml codestyle: if: github.event.pull_request.draft == false # Conditional check for draft per job. - uses: ./.github/workflows/codestyle_v2.yml - - yarn_eslint: - if: github.event.pull_request.draft == false # Conditional check for draft per job. - uses: ./.github/workflows/test_codestyle_v2.yml + uses: ./.github/workflows/codestyle.yml --- a/.github/workflows/ci-master.yml +++ b/.github/workflows/ci-master.yml @@ -17,10 +17,10 @@ jobs: unit-test: - uses: ./.github/workflows/unit-test_v2.yml + uses: ./.github/workflows/unit-test.yml node-only-update: - uses: ./.github/workflows/node-only-update_v2.yml + uses: ./.github/workflows/node-only-update.yml forkless: uses: ./.github/workflows/forkless.yml @@ -34,4 +34,4 @@ secrets: inherit # pass all secrets from initial workflow to nested codestyle: - uses: ./.github/workflows/codestyle_v2.yml + uses: ./.github/workflows/codestyle.yml --- /dev/null +++ b/.github/workflows/codestyle.yml @@ -0,0 +1,55 @@ +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837012/Code+style+testing +# Nested workflow for checks related to formatting Rust code + +name: codestyle + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + +jobs: + rustfmt: + runs-on: [ self-hosted-ci ] + steps: + - uses: actions/checkout@v3 + - name: Install latest nightly + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + default: true + target: wasm32-unknown-unknown + components: rustfmt, clippy + - name: Run cargo fmt + run: cargo fmt -- --check # In that mode it returns only exit code. + - name: Cargo fmt state + if: success() + run: echo "Nothing to do. Command 'cargo fmt -- --check' returned exit code 0." + + yarn_eslint: + runs-on: [ self-hosted-ci ] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 16 + - name: Install modules + run: cd tests && yarn + - name: Run ESLint + run: cd tests && yarn eslint --ext .ts,.js src/ + + clippy: + if: ${{ false }} + runs-on: [ self-hosted-ci ] + steps: + - uses: actions/checkout@v3 + - name: Install substrate dependencies + run: sudo apt-get install libssl-dev pkg-config libclang-dev clang protobuf-compiler + - name: Install latest nightly + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + default: true + target: wasm32-unknown-unknown + components: rustfmt, clippy + - name: Run cargo check + run: cargo clippy -- -Dwarnings --- a/.github/workflows/codestyle_v2.yml +++ /dev/null @@ -1,47 +0,0 @@ -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837012/Code+style+testing -# Nested workflow for checks related to formatting Rust code - -name: cargo fmt - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - -jobs: - rustfmt: - runs-on: self-hosted-ci - - steps: - - uses: actions/checkout@v3 - - name: Install latest nightly - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly - default: true - target: wasm32-unknown-unknown - components: rustfmt, clippy - - name: Run cargo fmt - run: cargo fmt -- --check # In that mode it returns only exit code. - - name: Cargo fmt state - if: success() - run: echo "Nothing to do. Command 'cargo fmt -- --check' returned exit code 0." - - - clippy: - if: ${{ false }} - runs-on: self-hosted-ci - - steps: - - - uses: actions/checkout@v3 - - name: Install substrate dependencies - run: sudo apt-get install libssl-dev pkg-config libclang-dev clang protobuf-compiler - - name: Install latest nightly - uses: actions-rs/toolchain@v1 - with: - toolchain: nightly - default: true - target: wasm32-unknown-unknown - components: rustfmt, clippy - - name: Run cargo check - run: cargo clippy -- -Dwarnings --- a/.github/workflows/dev-build-tests_v2.yml +++ /dev/null @@ -1,101 +0,0 @@ -# Integration test in --dev mode -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586411104/Integration+tests -name: yarn test dev - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - - - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - dev_build_int_tests: - # The type of runner that the job will run on - runs-on: [self-hosted-ci,medium] - timeout-minutes: 1380 - - name: ${{ matrix.network }} - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - strategy: - matrix: - include: - - network: "opal" - features: "opal-runtime" - - network: "quartz" - features: "quartz-runtime" - - network: "unique" - features: "unique-runtime" - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/docker-compose.tmp-dev.j2 - output_file: .docker/docker-compose.${{ matrix.network }}.yml - variables: | - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - FEATURE=${{ matrix.features }} - - - - name: Show build configuration - run: cat .docker/docker-compose.${{ matrix.network }}.yml - - - name: Build the stack - run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --remove-orphans - - - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Run tests - working-directory: tests - run: | - yarn install - yarn add mochawesome - node scripts/readyness.js - echo "Ready to start tests" - yarn polkadot-types - NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW} - env: - RPC_URL: http://127.0.0.1:9933/ - - - name: Test Report - uses: phoenix-actions/test-reporting@v8 - id: test-report - if: success() || failure() # run this step even if previous step failed - with: - name: int test results - ${{ matrix.network }} # Name of the check run which will be created - path: tests/mochawesome-report/test-*.json # Path to test results - reporter: mochawesome-json - fail-on-error: 'false' - - - name: Read output variables - run: | - echo "url is ${{ steps.test-report.outputs.runHtmlUrl }}" - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f -a - docker system prune -f - docker image prune -f -a --- /dev/null +++ b/.github/workflows/forkless-update-data.yml @@ -0,0 +1,171 @@ +# Forkless update with data replication +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586869792/Forkless+update+with+data + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + execution-marix: + + name: Prepare execution matrix + + runs-on: self-hosted-ci + outputs: + matrix: ${{ steps.create_matrix.outputs.matrix }} + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Create Execution matrix + uses: CertainLach/create-matrix-action@v3 + id: create_matrix + with: + matrix: | + network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}} + network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}} + network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}, replica_from_address {${{ env.UNIQUE_REPLICA_FROM }}} + + forkless-update-data: + needs: execution-marix + # The type of runner that the job will run on + runs-on: [self-hosted-ci,large] + timeout-minutes: 1380 + + name: ${{ matrix.network }}-data + strategy: + matrix: + include: ${{fromJson(needs.execution-marix.outputs.matrix)}} + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + + steps: + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-forkless-data.j2 + output_file: .docker/docker-compose.${{ matrix.network }}.yml + variables: | + REPO_URL=${{ github.server_url }}/${{ github.repository }}.git + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} + MAINNET_TAG=${{ matrix.mainnet_tag }} + MAINNET_BRANCH=${{ matrix.mainnet_branch }} + FEATURE=${{ matrix.features }} + RUNTIME=${{ matrix.runtime }} + BRANCH=${{ github.head_ref }} + REPLICA_FROM=${{ matrix.replica_from_address }} + + - name: Show build configuration + run: cat .docker/docker-compose.${{ matrix.network }}.yml + + - name: Generate launch-config-forkless-data.json + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/forkless-config/launch-config-forkless-data.j2 + output_file: .docker/launch-config-forkless-data.json + variables: | + FEATURE=${{ matrix.features }} + RUNTIME=${{ matrix.runtime }} + + - name: Show launch-config-forkless configuration + run: cat .docker/launch-config-forkless-data.json + + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --force-recreate --timeout 300 + + - name: Check if docker logs consist logs related to Runtime Upgrade testing. + if: success() + run: | + counter=160 + function check_container_status { + docker inspect -f {{.State.Running}} node-parachain + } + function do_docker_logs { + docker logs --details node-parachain 2>&1 + } + function is_started { + if [ "$(check_container_status)" == "true" ]; then + echo "Container: node-parachain RUNNING"; + echo "Check Docker logs" + DOCKER_LOGS=$(do_docker_logs) + if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then + echo "🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸" + return 0 + elif [[ ${DOCKER_LOGS} = *"🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"* ]];then + echo "🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧" + return 1 + else + echo "Message not found in logs output, repeating..." + return 1 + fi + else + echo "Container node-parachain not RUNNING" + echo "Halting all future checks" + exit 1 + fi + exit 0 + } + while ! is_started; do + echo "Waiting for special message in log files " + sleep 30s + counter=$(( $counter - 1 )) + echo "Counter: $counter" + if [ "$counter" -gt "0" ]; then + continue + else + break + fi + done + echo "Halting script" + exit 0 + shell: bash + + - name: Collect Docker Logs + if: success() || failure() + uses: jwalton/gh-docker-logs@v2.2.0 + with: + dest: './forkless-parachain-upgrade-data-logs.${{ matrix.features }}' + images: 'node-parachain' + + - name: Show Docker logs + if: success() || failure() + run: cat './forkless-parachain-upgrade-data-logs.${{ matrix.features }}/node-parachain.log' + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down --volumes + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f + docker image prune -f -a --- a/.github/workflows/forkless-update-data_v2.yml +++ /dev/null @@ -1,171 +0,0 @@ -# Forkless update with data replication -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586869792/Forkless+update+with+data - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - execution-marix: - - name: Prepare execution matrix - - runs-on: self-hosted-ci - outputs: - matrix: ${{ steps.create_matrix.outputs.matrix }} - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Create Execution matrix - uses: CertainLach/create-matrix-action@v3 - id: create_matrix - with: - matrix: | - network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}} - network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}} - network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}, replica_from_address {${{ env.UNIQUE_REPLICA_FROM }}} - - forkless-update-data: - needs: execution-marix - # The type of runner that the job will run on - runs-on: [self-hosted-ci,large] - timeout-minutes: 1380 - - name: ${{ matrix.network }}-data - strategy: - matrix: - include: ${{fromJson(needs.execution-marix.outputs.matrix)}} - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - - steps: - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/docker-compose.tmp-forkless-data.j2 - output_file: .docker/docker-compose.${{ matrix.network }}.yml - variables: | - REPO_URL=${{ github.server_url }}/${{ github.repository }}.git - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} - POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} - MAINNET_TAG=${{ matrix.mainnet_tag }} - MAINNET_BRANCH=${{ matrix.mainnet_branch }} - FEATURE=${{ matrix.features }} - RUNTIME=${{ matrix.runtime }} - BRANCH=${{ github.head_ref }} - REPLICA_FROM=${{ matrix.replica_from_address }} - - - name: Show build configuration - run: cat .docker/docker-compose.${{ matrix.network }}.yml - - - name: Generate launch-config-forkless-data.json - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/forkless-config/launch-config-forkless-data.j2 - output_file: .docker/launch-config-forkless-data.json - variables: | - FEATURE=${{ matrix.features }} - RUNTIME=${{ matrix.runtime }} - - - name: Show launch-config-forkless configuration - run: cat .docker/launch-config-forkless-data.json - - - - name: Build the stack - run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --force-recreate --timeout 300 - - - name: Check if docker logs consist logs related to Runtime Upgrade testing. - if: success() - run: | - counter=160 - function check_container_status { - docker inspect -f {{.State.Running}} node-parachain - } - function do_docker_logs { - docker logs --details node-parachain 2>&1 - } - function is_started { - if [ "$(check_container_status)" == "true" ]; then - echo "Container: node-parachain RUNNING"; - echo "Check Docker logs" - DOCKER_LOGS=$(do_docker_logs) - if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then - echo "🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸" - return 0 - elif [[ ${DOCKER_LOGS} = *"🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"* ]];then - echo "🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧" - return 1 - else - echo "Message not found in logs output, repeating..." - return 1 - fi - else - echo "Container node-parachain not RUNNING" - echo "Halting all future checks" - exit 1 - fi - exit 0 - } - while ! is_started; do - echo "Waiting for special message in log files " - sleep 30s - counter=$(( $counter - 1 )) - echo "Counter: $counter" - if [ "$counter" -gt "0" ]; then - continue - else - break - fi - done - echo "Halting script" - exit 0 - shell: bash - - - name: Collect Docker Logs - if: success() || failure() - uses: jwalton/gh-docker-logs@v2.2.0 - with: - dest: './forkless-parachain-upgrade-data-logs.${{ matrix.features }}' - images: 'node-parachain' - - - name: Show Docker logs - if: success() || failure() - run: cat './forkless-parachain-upgrade-data-logs.${{ matrix.features }}/node-parachain.log' - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down --volumes - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f -a - docker system prune -f - docker image prune -f -a --- /dev/null +++ b/.github/workflows/forkless-update-nodata.yml @@ -0,0 +1,219 @@ +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837021/Forkless+update+without+data +# Forkless update without data replication + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + execution-marix: + + name: Prepare execution matrix + + runs-on: self-hosted-ci + outputs: + matrix: ${{ steps.create_matrix.outputs.matrix }} + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Create Execution matrix + uses: CertainLach/create-matrix-action@v3 + id: create_matrix + with: + matrix: | + network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}} + network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}} + network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}} + + + forkless-update-nodata: + needs: execution-marix + # The type of runner that the job will run on + runs-on: [self-hosted-ci,large] + + timeout-minutes: 1380 + + name: ${{ matrix.network }}-nodata + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: ${{fromJson(needs.execution-marix.outputs.matrix)}} + + steps: + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-forkless-nodata.j2 + output_file: .docker/docker-compose.${{ matrix.network }}.yml + variables: | + REPO_URL=${{ github.server_url }}/${{ github.repository }}.git + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} + MAINNET_TAG=${{ matrix.mainnet_tag }} + MAINNET_BRANCH=${{ matrix.mainnet_branch }} + FEATURE=${{ matrix.features }} + RUNTIME=${{ matrix.runtime }} + BRANCH=${{ github.head_ref }} + + - name: Show build configuration + run: cat .docker/docker-compose.${{ matrix.network }}.yml + + - name: Generate launch-config-forkless-nodata.json + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/forkless-config/launch-config-forkless-nodata.j2 + output_file: .docker/launch-config-forkless-nodata.json + variables: | + FEATURE=${{ matrix.features }} + RUNTIME=${{ matrix.runtime }} + + - name: Show launch-config-forkless configuration + run: cat .docker/launch-config-forkless-nodata.json + + - uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --force-recreate --timeout 300 + + - name: Check if docker logs consist logs related to Runtime Upgrade testing. + if: success() + run: | + counter=160 + function check_container_status { + docker inspect -f {{.State.Running}} node-parachain + } + function do_docker_logs { + docker logs --details node-parachain 2>&1 + } + function is_started { + if [ "$(check_container_status)" == "true" ]; then + echo "Container: node-parachain RUNNING"; + echo "Check Docker logs" + DOCKER_LOGS=$(do_docker_logs) + if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then + echo "🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸" + return 0 + elif [[ ${DOCKER_LOGS} = *"🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"* ]];then + echo "🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧" + return 1 + else + echo "Message not found in logs output, repeating..." + return 1 + fi + else + echo "Container node-parachain not RUNNING" + echo "Halting all future checks" + exit 1 + fi + exit 0 + } + while ! is_started; do + echo "Waiting for special message in log files " + sleep 30s + counter=$(( $counter - 1 )) + echo "Counter: $counter" + if [ "$counter" -gt "0" ]; then + continue + else + break + fi + done + echo "Halting script" + exit 0 + shell: bash + + - name: Collect Docker Logs + if: success() || failure() + uses: jwalton/gh-docker-logs@v2.2.0 + with: + dest: './forkless-parachain-upgrade-nodata-logs.${{ matrix.features }}' + images: 'node-parachain' + + - name: Show docker logs + if: success() || failure() + run: cat './forkless-parachain-upgrade-nodata-logs.${{ matrix.features }}/node-parachain.log' + + - name: Run Parallel tests + working-directory: tests + run: | + yarn install + yarn add mochawesome + node scripts/readyness.js + echo "Ready to start tests" + yarn polkadot-types + NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW} + env: + RPC_URL: http://127.0.0.1:9933/ + + - name: Test Report Parallel + uses: phoenix-actions/test-reporting@v8 + id: test-report-parallel + if: success() || failure() # run this step even if previous step failed + with: + name: Report Parallel tests results - ${{ matrix.network }} # Name of the check run which will be created + path: tests/mochawesome-report/test-parallel-*.json # Path to test results + reporter: mochawesome-json + fail-on-error: 'false' + + - name: Run Sequential tests + working-directory: tests + if: success() || failure() + run: | + yarn install + yarn add mochawesome + node scripts/readyness.js + echo "Ready to start tests" + yarn polkadot-types + NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW} + env: + RPC_URL: http://127.0.0.1:9933/ + + - name: Test Report Sequential + uses: phoenix-actions/test-reporting@v8 + id: test-report-sequential + if: success() || failure() # run this step even if previous step failed + with: + name: Report Sequential tests results - ${{ matrix.network }} # Name of the check run which will be created + path: tests/mochawesome-report/test-sequential-*.json # Path to test results + reporter: mochawesome-json + fail-on-error: 'false' + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f + docker image prune -f -a --- a/.github/workflows/forkless-update-nodata_v2.yml +++ /dev/null @@ -1,219 +0,0 @@ -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837021/Forkless+update+without+data -# Forkless update without data replication - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - execution-marix: - - name: Prepare execution matrix - - runs-on: self-hosted-ci - outputs: - matrix: ${{ steps.create_matrix.outputs.matrix }} - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Create Execution matrix - uses: CertainLach/create-matrix-action@v3 - id: create_matrix - with: - matrix: | - network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}} - network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}} - network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}} - - - forkless-update-nodata: - needs: execution-marix - # The type of runner that the job will run on - runs-on: [self-hosted-ci,large] - - timeout-minutes: 1380 - - name: ${{ matrix.network }}-nodata - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - strategy: - matrix: - include: ${{fromJson(needs.execution-marix.outputs.matrix)}} - - steps: - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/docker-compose.tmp-forkless-nodata.j2 - output_file: .docker/docker-compose.${{ matrix.network }}.yml - variables: | - REPO_URL=${{ github.server_url }}/${{ github.repository }}.git - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} - POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} - MAINNET_TAG=${{ matrix.mainnet_tag }} - MAINNET_BRANCH=${{ matrix.mainnet_branch }} - FEATURE=${{ matrix.features }} - RUNTIME=${{ matrix.runtime }} - BRANCH=${{ github.head_ref }} - - - name: Show build configuration - run: cat .docker/docker-compose.${{ matrix.network }}.yml - - - name: Generate launch-config-forkless-nodata.json - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/forkless-config/launch-config-forkless-nodata.j2 - output_file: .docker/launch-config-forkless-nodata.json - variables: | - FEATURE=${{ matrix.features }} - RUNTIME=${{ matrix.runtime }} - - - name: Show launch-config-forkless configuration - run: cat .docker/launch-config-forkless-nodata.json - - - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Build the stack - run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --force-recreate --timeout 300 - - - name: Check if docker logs consist logs related to Runtime Upgrade testing. - if: success() - run: | - counter=160 - function check_container_status { - docker inspect -f {{.State.Running}} node-parachain - } - function do_docker_logs { - docker logs --details node-parachain 2>&1 - } - function is_started { - if [ "$(check_container_status)" == "true" ]; then - echo "Container: node-parachain RUNNING"; - echo "Check Docker logs" - DOCKER_LOGS=$(do_docker_logs) - if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then - echo "🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸" - return 0 - elif [[ ${DOCKER_LOGS} = *"🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧"* ]];then - echo "🚧 PARACHAINS' RUNTIME UPGRADE TESTING FAILED 🚧" - return 1 - else - echo "Message not found in logs output, repeating..." - return 1 - fi - else - echo "Container node-parachain not RUNNING" - echo "Halting all future checks" - exit 1 - fi - exit 0 - } - while ! is_started; do - echo "Waiting for special message in log files " - sleep 30s - counter=$(( $counter - 1 )) - echo "Counter: $counter" - if [ "$counter" -gt "0" ]; then - continue - else - break - fi - done - echo "Halting script" - exit 0 - shell: bash - - - name: Collect Docker Logs - if: success() || failure() - uses: jwalton/gh-docker-logs@v2.2.0 - with: - dest: './forkless-parachain-upgrade-nodata-logs.${{ matrix.features }}' - images: 'node-parachain' - - - name: Show docker logs - if: success() || failure() - run: cat './forkless-parachain-upgrade-nodata-logs.${{ matrix.features }}/node-parachain.log' - - - name: Run Parallel tests - working-directory: tests - run: | - yarn install - yarn add mochawesome - node scripts/readyness.js - echo "Ready to start tests" - yarn polkadot-types - NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW} - env: - RPC_URL: http://127.0.0.1:9933/ - - - name: Test Report Parallel - uses: phoenix-actions/test-reporting@v8 - id: test-report-parallel - if: success() || failure() # run this step even if previous step failed - with: - name: Report Parallel tests results - ${{ matrix.network }} # Name of the check run which will be created - path: tests/mochawesome-report/test-parallel-*.json # Path to test results - reporter: mochawesome-json - fail-on-error: 'false' - - - name: Run Sequential tests - working-directory: tests - if: success() || failure() - run: | - yarn install - yarn add mochawesome - node scripts/readyness.js - echo "Ready to start tests" - yarn polkadot-types - NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW} - env: - RPC_URL: http://127.0.0.1:9933/ - - - name: Test Report Sequential - uses: phoenix-actions/test-reporting@v8 - id: test-report-sequential - if: success() || failure() # run this step even if previous step failed - with: - name: Report Sequential tests results - ${{ matrix.network }} # Name of the check run which will be created - path: tests/mochawesome-report/test-sequential-*.json # Path to test results - reporter: mochawesome-json - fail-on-error: 'false' - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f -a - docker system prune -f - docker image prune -f -a --- a/.github/workflows/forkless.yml +++ b/.github/workflows/forkless.yml @@ -9,12 +9,12 @@ forkless-update-data: name: with data - uses: ./.github/workflows/forkless-update-data_v2.yml + uses: ./.github/workflows/forkless-update-data.yml forkless-update-no-data: name: no data - uses: ./.github/workflows/forkless-update-nodata_v2.yml + uses: ./.github/workflows/forkless-update-nodata.yml try-runtime: name: try-runtime - uses: ./.github/workflows/try-runtime_v2.yml + uses: ./.github/workflows/try-runtime.yml --- /dev/null +++ b/.github/workflows/market-test.yml @@ -0,0 +1,187 @@ +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586509375/Market+e2e+test +# Nested workflow for lunching Market e2e tests from external repository https://github.com/UniqueNetwork/market-e2e-tests + +name: market api tests + +# Controls when the action will run. +on: + workflow_call: + + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + market_test: + # The type of runner that the job will run on + runs-on: [self-hosted-ci,large] + timeout-minutes: 360 + + name: ${{ matrix.network }} + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: + - network: "opal" + features: "opal-runtime" + + steps: + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout master repo + uses: actions/checkout@master + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Checkout Market e2e tests + uses: actions/checkout@v3 + with: + repository: 'UniqueNetwork/market-e2e-tests' + ssh-key: ${{ secrets.GH_PAT }} + path: 'qa-tests' + ref: 'master' + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Copy qa-tests/.env.example to qa-tests/.env + working-directory: qa-tests + run: cp .env.docker .env + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: qa-tests/.docker/docker-compose.tmp-market.j2 + output_file: qa-tests/.docker/docker-compose.${{ matrix.network }}.yml + variables: | + REPO_URL=${{ github.server_url }}/${{ github.repository }}.git + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + FEATURE=${{ matrix.features }} + BRANCH=${{ github.head_ref }} + + + - name: Show build configuration + working-directory: qa-tests + run: cat .docker/docker-compose.${{ matrix.network }}.yml + + - name: Start node-parachain + working-directory: qa-tests + run: docker-compose -f ".docker/docker-compose.market.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --remove-orphans --force-recreate node-parachain + + - uses: actions/setup-node@v3 + with: + node-version: 16.17 + + - name: Setup TypeScript + working-directory: qa-tests + run: | + npm install -g ts-node + npm install + + - name: Copy qa-tests/.env.docker to qa-tests/.env + working-directory: qa-tests + run: | + rm -rf .env + cp .env.docker .env + +# Temporary disable node readyness check. Have to dig into the script logic. +# - name: Wait for chain up and running +# working-directory: tests +# run: | +# yarn install +# node scripts/readyness.js +# echo "Ready to start tests" +# env: +# RPC_URL: http://127.0.0.1:9933/ + + - name: Wait for chain up and running + run: | + sleep 1200s + echo "Ready to start Market e2e tests" + + - name: Show content of .env file and Generate accounts + working-directory: qa-tests + run: | + cat .env + ts-node ./src/scripts/create-market-accounts.ts + + - name: Copy qa-tests/.env to qa-tests/.env.docker + working-directory: qa-tests + run: | + rm -rf .env.docker + cp .env .env.docker + + - name: Get chain logs + if: always() # run this step always + run: | + docker exec node-parachain cat /polkadot-launch/9944.log + docker exec node-parachain cat /polkadot-launch/9945.log + docker exec node-parachain cat /polkadot-launch/alice.log + docker exec node-parachain cat /polkadot-launch/eve.log + docker exec node-parachain cat /polkadot-launch/dave.log + docker exec node-parachain cat /polkadot-launch/charlie.log + + - name: Deploy contracts + run: | + cd qa-tests + ts-node ./src/scripts/deploy-contract.ts + + - name: Timeout for debug + if: failure() + run: sleep 300s + + - name: Import test data + working-directory: qa-tests + run: ts-node ./src/scripts/create-test-collections.ts + + - name: Show content of qa-test .env + working-directory: qa-tests + run: cat .env + + - name: Read qa -test .env file Before market start + uses: xom9ikk/dotenv@v2 + with: + path: qa-tests/ + + - name: local-market:start + run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" up -d --build + + - name: Wait for market readyness + working-directory: qa-tests + run: src/scripts/wait-market-ready.sh + shell: bash + + - name: Install dependecies + working-directory: qa-tests + run: | + npm ci + npm install -D @playwright/test + npx playwright install-deps + npx playwright install + + - name: Show content of qa-test .env + working-directory: qa-tests + run: cat .env + + - name: Test API interface + working-directory: qa-tests + run: | + npx playwright test --workers=3 --quiet .*.api.test.ts --reporter=github --config playwright.config.ts + + - name: Timeout for debug + if: failure() + run: sleep 300s + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" down --volumes + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f + docker system prune -f --- a/.github/workflows/market-test_v2.yml +++ /dev/null @@ -1,187 +0,0 @@ -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586509375/Market+e2e+test -# Nested workflow for lunching Market e2e tests from external repository https://github.com/UniqueNetwork/market-e2e-tests - -name: market api tests - -# Controls when the action will run. -on: - workflow_call: - - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - market_test: - # The type of runner that the job will run on - runs-on: [self-hosted-ci,large] - timeout-minutes: 360 - - name: ${{ matrix.network }} - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - strategy: - matrix: - include: - - network: "opal" - features: "opal-runtime" - - steps: - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Checkout master repo - uses: actions/checkout@master - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Checkout Market e2e tests - uses: actions/checkout@v3 - with: - repository: 'UniqueNetwork/market-e2e-tests' - ssh-key: ${{ secrets.GH_PAT }} - path: 'qa-tests' - ref: 'master' - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Copy qa-tests/.env.example to qa-tests/.env - working-directory: qa-tests - run: cp .env.docker .env - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: qa-tests/.docker/docker-compose.tmp-market.j2 - output_file: qa-tests/.docker/docker-compose.${{ matrix.network }}.yml - variables: | - REPO_URL=${{ github.server_url }}/${{ github.repository }}.git - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} - FEATURE=${{ matrix.features }} - BRANCH=${{ github.head_ref }} - - - - name: Show build configuration - working-directory: qa-tests - run: cat .docker/docker-compose.${{ matrix.network }}.yml - - - name: Start node-parachain - working-directory: qa-tests - run: docker-compose -f ".docker/docker-compose.market.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --remove-orphans --force-recreate node-parachain - - - uses: actions/setup-node@v3 - with: - node-version: 16.17 - - - name: Setup TypeScript - working-directory: qa-tests - run: | - npm install -g ts-node - npm install - - - name: Copy qa-tests/.env.docker to qa-tests/.env - working-directory: qa-tests - run: | - rm -rf .env - cp .env.docker .env - -# Temporary disable node readyness check. Have to dig into the script logic. -# - name: Wait for chain up and running -# working-directory: tests -# run: | -# yarn install -# node scripts/readyness.js -# echo "Ready to start tests" -# env: -# RPC_URL: http://127.0.0.1:9933/ - - - name: Wait for chain up and running - run: | - sleep 1200s - echo "Ready to start Market e2e tests" - - - name: Show content of .env file and Generate accounts - working-directory: qa-tests - run: | - cat .env - ts-node ./src/scripts/create-market-accounts.ts - - - name: Copy qa-tests/.env to qa-tests/.env.docker - working-directory: qa-tests - run: | - rm -rf .env.docker - cp .env .env.docker - - - name: Get chain logs - if: always() # run this step always - run: | - docker exec node-parachain cat /polkadot-launch/9944.log - docker exec node-parachain cat /polkadot-launch/9945.log - docker exec node-parachain cat /polkadot-launch/alice.log - docker exec node-parachain cat /polkadot-launch/eve.log - docker exec node-parachain cat /polkadot-launch/dave.log - docker exec node-parachain cat /polkadot-launch/charlie.log - - - name: Deploy contracts - run: | - cd qa-tests - ts-node ./src/scripts/deploy-contract.ts - - - name: Timeout for debug - if: failure() - run: sleep 300s - - - name: Import test data - working-directory: qa-tests - run: ts-node ./src/scripts/create-test-collections.ts - - - name: Show content of qa-test .env - working-directory: qa-tests - run: cat .env - - - name: Read qa -test .env file Before market start - uses: xom9ikk/dotenv@v2 - with: - path: qa-tests/ - - - name: local-market:start - run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" up -d --build - - - name: Wait for market readyness - working-directory: qa-tests - run: src/scripts/wait-market-ready.sh - shell: bash - - - name: Install dependecies - working-directory: qa-tests - run: | - npm ci - npm install -D @playwright/test - npx playwright install-deps - npx playwright install - - - name: Show content of qa-test .env - working-directory: qa-tests - run: cat .env - - - name: Test API interface - working-directory: qa-tests - run: | - npx playwright test --workers=8 --quiet .*.api.test.ts --reporter=github --config playwright.config.ts - - - name: Timeout for debug - if: failure() - run: sleep 300s - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f "qa-tests/.docker/docker-compose.market.yml" -f "qa-tests/.docker/docker-compose.${{ matrix.network }}.yml" down --volumes - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f - docker system prune -f --- /dev/null +++ b/.github/workflows/node-only-update.yml @@ -0,0 +1,371 @@ +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837028/Nodes+only+update +# Node only update with restart polkadot-launch process. + +name: nodes-only update + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + nodes-execution-matrix: + + name: execution matrix + + runs-on: self-hosted-ci + outputs: + matrix: ${{ steps.create_matrix.outputs.matrix }} + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Create Execution matrix + uses: CertainLach/create-matrix-action@v3 + id: create_matrix + with: + matrix: | + network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}} + network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}} + network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}} + + + + nodes-only-update: + needs: nodes-execution-matrix + # The type of runner that the job will run on + runs-on: [self-hosted-ci,large] + + timeout-minutes: 2880 # 48 hours for execution jobs. + + name: ${{ matrix.network }} + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: ${{fromJson(needs.nodes-execution-matrix.outputs.matrix)}} + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-node.j2 + output_file: .docker/docker-compose.node.${{ matrix.network }}.yml + variables: | + REPO_URL=${{ github.server_url }}/${{ github.repository }}.git + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} + MAINNET_TAG=${{ matrix.mainnet_tag }} + MAINNET_BRANCH=${{ matrix.mainnet_branch }} + FEATURE=${{ matrix.features }} + RUNTIME=${{ matrix.runtime }} + BRANCH=${{ github.head_ref }} + + - name: Show build configuration + run: cat .docker/docker-compose.node.${{ matrix.network }}.yml + + - name: Generate launch-config-forkless-nodata.json + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/forkless-config/launch-config-forkless-nodata.j2 + output_file: .docker/launch-config-forkless-nodata.json + variables: | + FEATURE=${{ matrix.features }} + RUNTIME=${{ matrix.runtime }} + + - name: Show launch-config-forkless configuration + run: cat .docker/launch-config-forkless-nodata.json + + - uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" up -d --build --remove-orphans --force-recreate --timeout 300 + + # 🚀 POLKADOT LAUNCH COMPLETE 🚀 + - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade. + if: success() + run: | + counter=160 + function check_container_status { + docker inspect -f {{.State.Running}} node-parachain + } + function do_docker_logs { + docker logs --details node-parachain 2>&1 + } + function is_started { + if [ "$(check_container_status)" == "true" ]; then + echo "Container: node-parachain RUNNING"; + echo "Check Docker logs" + DOCKER_LOGS=$(do_docker_logs) + if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then + echo "🚀 POLKADOT LAUNCH COMPLETE 🚀" + return 0 + else + echo "Message not found in logs output, repeating..." + return 1 + fi + else + echo "Container node-parachain NOT RUNNING" + echo "Halting all future checks" + exit 1 + fi + echo "something goes wrong" + exit 1 + } + while ! is_started; do + echo "Waiting for special message in log files " + sleep 30s + counter=$(( $counter - 1 )) + echo "Counter: $counter" + if [ "$counter" -gt "0" ]; then + continue + else + break + fi + done + echo "Halting script" + exit 0 + shell: bash + + - name: Checkout at '${{ matrix.mainnet_branch }}' branch + uses: actions/checkout@master + with: + ref: ${{ matrix.mainnet_branch }} #Checking out head commit + path: ${{ matrix.mainnet_branch }} + + - name: Run tests before Node Parachain upgrade + working-directory: ${{ matrix.mainnet_branch }}/tests + run: | + yarn install + yarn add mochawesome + echo "Ready to start tests" + yarn polkadot-types + NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-before-${NOW} + env: + RPC_URL: http://127.0.0.1:9933/ + + - name: Upload Test Report Before Node upgrade + uses: phoenix-actions/test-reporting@v8 + id: test-report-before + if: success() || failure() # run this step even if previous step failed + with: + name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created + path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-before-*.json # Path to test results + reporter: mochawesome-json + fail-on-error: 'false' + + # TODO uncomment thease steps after the merge + #- name: Run Parallel tests before Node Parachain upgrade + # working-directory: ${{ matrix.mainnet_branch }}/tests + # run: | + # yarn install + # yarn add mochawesome + # echo "Ready to start tests" + # yarn polkadot-types + # NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW} + # env: + # RPC_URL: http://127.0.0.1:9933/ + + #- name: Upload Parallel Test Report Before Node upgrade + # uses: phoenix-actions/test-reporting@v8 + # id: test-parallel-report-before + # if: success() || failure() # run this step even if previous step failed + # with: + # name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created + # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-parallel-*.json # Path to test results + # reporter: mochawesome-json + # fail-on-error: 'false' + + # - name: Run Sequential tests before Node Parachain upgrade + # if: success() || failure() + # working-directory: ${{ matrix.mainnet_branch }}/tests + # run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW} + # env: + # RPC_URL: http://127.0.0.1:9933/ + + # - name: Upload Sequential Test Report Before Node upgrade + # uses: phoenix-actions/test-reporting@v8 + # id: test-sequential-report-before + # if: success() || failure() # run this step even if previous step failed + # with: + # name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created + # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-sequential-*.json # Path to test results + # reporter: mochawesome-json + # fail-on-error: 'false' + + - name: Send SIGUSR1 to polkadot-launch process + if: success() || failure() + run: | + #Get PID of polkadot-launch + ContainerID=$(docker ps -aqf "name=node-parachain") + PID=$(docker exec node-parachain pidof 'polkadot-launch') + sleep 30s + echo -e "Show logs of node-parachain container.\n" + docker logs ${ContainerID} + echo -e "\n" + echo -e "Restart polkadot-launch process: $PID\n" + docker exec node-parachain kill -SIGUSR1 ${PID} + echo "SIGUSR1 sent to Polkadot-launch PID: $PID" + docker logs ${ContainerID} + + - name: Get chain logs in case of docker image crashed after Polkadot Launch restart + if: failure() # run this step only at failure + run: | + docker exec node-parachain cat /polkadot-launch/9944.log + docker exec node-parachain cat /polkadot-launch/9945.log + docker exec node-parachain cat /polkadot-launch/alice.log + docker exec node-parachain cat /polkadot-launch/eve.log + docker exec node-parachain cat /polkadot-launch/dave.log + docker exec node-parachain cat /polkadot-launch/charlie.log + + - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade. + if: success() + run: | + counter=160 + function check_container_status { + docker inspect -f {{.State.Running}} node-parachain + } + function do_docker_logs { + docker logs --details node-parachain 2>&1 + } + function is_started { + if [ "$(check_container_status)" == "true" ]; then + echo "Container: node-parachain RUNNING"; + echo "Check Docker logs" + DOCKER_LOGS=$(do_docker_logs) + if [[ ${DOCKER_LOGS} = *"All parachain collators restarted with the new binaries."* ]];then + echo "🌗 All parachain collators restarted with the new binaries." + return 0 + else + echo "Message not found in logs output, repeating..." + return 1 + fi + else + echo "Container node-parachain NOT RUNNING" + echo "Halting all future checks" + exit 1 + fi + echo "something goes wrong" + exit 1 + } + while ! is_started; do + echo "Waiting for special message in log files " + sleep 30s + counter=$(( $counter - 1 )) + echo "Counter: $counter" + if [ "$counter" -gt "0" ]; then + continue + else + break + fi + done + echo "Halting script" + exit 0 + shell: bash + + ## TODO: Remove next two blocks before switch to Parrallel & Sequental tests. Uncoment commented blocks. + - name: Run tests after Node Parachain upgrade + working-directory: ${{ matrix.mainnet_branch }}/tests + run: | + yarn install + yarn add mochawesome + echo "Ready to start tests" + yarn polkadot-types + NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-after-${NOW} + env: + RPC_URL: http://127.0.0.1:9933/ + + - name: Test Report After Node upgrade + uses: phoenix-actions/test-reporting@v8 + id: test-report-after + if: success() || failure() # run this step even if previous step failed + with: + name: Tests after node upgrade ${{ matrix.network }} # Name of the check run which will be created + path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-after-*.json # Path to test results + reporter: mochawesome-json + fail-on-error: 'false' + + # TODO uncomment thease steps after the merge + #- name: Run Parallel tests after Node Parachain upgrade + # working-directory: ${{ matrix.mainnet_branch }}/tests + # run: | + # yarn install + # yarn add mochawesome + # node scripts/readyness.js + # echo "Ready to start tests" + # yarn polkadot-types + # NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW} + # env: + # RPC_URL: http://127.0.0.1:9933/ + + #- name: Test Report Parallel After Node upgrade + # uses: phoenix-actions/test-reporting@v8 + # id: test-report-parallel-after + # if: success() || failure() # run this step even if previous step failed + # with: + # name: Tests after node upgrade ${{ matrix.network }} # Name of the check run which will be created + # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-parallel-*.json # Path to test results + # reporter: mochawesome-json + # fail-on-error: 'false' + + #- name: Run Sequential tests after Node Parachain upgrade + # if: success() || failure() + # working-directory: ${{ matrix.mainnet_branch }}/tests + # run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW} + # env: + # RPC_URL: http://127.0.0.1:9933/ + + #- name: Upload Sequential Test Report After Node upgrade + # uses: phoenix-actions/test-reporting@v8 + # id: test-sequential-report-after + # if: success() || failure() # run this step even if previous step failed + # with: + # name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created + # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-sequential-*.json # Path to test results + # reporter: mochawesome-json + # fail-on-error: 'false' + + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" down --volumes + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f + docker image prune -f -a + + - name: Remove repo at the end + if: always() # run this step always + run: | + ls -ls ./ --- a/.github/workflows/node-only-update_v2.yml +++ /dev/null @@ -1,371 +0,0 @@ -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837028/Nodes+only+update -# Node only update with restart polkadot-launch process. - -name: nodes-only update - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - nodes-execution-matrix: - - name: execution matrix - - runs-on: self-hosted-ci - outputs: - matrix: ${{ steps.create_matrix.outputs.matrix }} - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Create Execution matrix - uses: CertainLach/create-matrix-action@v3 - id: create_matrix - with: - matrix: | - network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}} - network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}} - network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}} - - - - nodes-only-update: - needs: nodes-execution-matrix - # The type of runner that the job will run on - runs-on: [self-hosted-ci,large] - - timeout-minutes: 2880 # 48 hours for execution jobs. - - name: ${{ matrix.network }} - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - strategy: - matrix: - include: ${{fromJson(needs.nodes-execution-matrix.outputs.matrix)}} - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/docker-compose.tmp-node.j2 - output_file: .docker/docker-compose.node.${{ matrix.network }}.yml - variables: | - REPO_URL=${{ github.server_url }}/${{ github.repository }}.git - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} - POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} - MAINNET_TAG=${{ matrix.mainnet_tag }} - MAINNET_BRANCH=${{ matrix.mainnet_branch }} - FEATURE=${{ matrix.features }} - RUNTIME=${{ matrix.runtime }} - BRANCH=${{ github.head_ref }} - - - name: Show build configuration - run: cat .docker/docker-compose.node.${{ matrix.network }}.yml - - - name: Generate launch-config-forkless-nodata.json - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/forkless-config/launch-config-forkless-nodata.j2 - output_file: .docker/launch-config-forkless-nodata.json - variables: | - FEATURE=${{ matrix.features }} - RUNTIME=${{ matrix.runtime }} - - - name: Show launch-config-forkless configuration - run: cat .docker/launch-config-forkless-nodata.json - - - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Build the stack - run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" up -d --build --remove-orphans --force-recreate --timeout 300 - - # 🚀 POLKADOT LAUNCH COMPLETE 🚀 - - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade. - if: success() - run: | - counter=160 - function check_container_status { - docker inspect -f {{.State.Running}} node-parachain - } - function do_docker_logs { - docker logs --details node-parachain 2>&1 - } - function is_started { - if [ "$(check_container_status)" == "true" ]; then - echo "Container: node-parachain RUNNING"; - echo "Check Docker logs" - DOCKER_LOGS=$(do_docker_logs) - if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then - echo "🚀 POLKADOT LAUNCH COMPLETE 🚀" - return 0 - else - echo "Message not found in logs output, repeating..." - return 1 - fi - else - echo "Container node-parachain NOT RUNNING" - echo "Halting all future checks" - exit 1 - fi - echo "something goes wrong" - exit 1 - } - while ! is_started; do - echo "Waiting for special message in log files " - sleep 30s - counter=$(( $counter - 1 )) - echo "Counter: $counter" - if [ "$counter" -gt "0" ]; then - continue - else - break - fi - done - echo "Halting script" - exit 0 - shell: bash - - - name: Checkout at '${{ matrix.mainnet_branch }}' branch - uses: actions/checkout@master - with: - ref: ${{ matrix.mainnet_branch }} #Checking out head commit - path: ${{ matrix.mainnet_branch }} - - - name: Run tests before Node Parachain upgrade - working-directory: ${{ matrix.mainnet_branch }}/tests - run: | - yarn install - yarn add mochawesome - echo "Ready to start tests" - yarn polkadot-types - NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-before-${NOW} - env: - RPC_URL: http://127.0.0.1:9933/ - - - name: Upload Test Report Before Node upgrade - uses: phoenix-actions/test-reporting@v8 - id: test-report-before - if: success() || failure() # run this step even if previous step failed - with: - name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created - path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-before-*.json # Path to test results - reporter: mochawesome-json - fail-on-error: 'false' - - # TODO uncomment thease steps after the merge - #- name: Run Parallel tests before Node Parachain upgrade - # working-directory: ${{ matrix.mainnet_branch }}/tests - # run: | - # yarn install - # yarn add mochawesome - # echo "Ready to start tests" - # yarn polkadot-types - # NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW} - # env: - # RPC_URL: http://127.0.0.1:9933/ - - #- name: Upload Parallel Test Report Before Node upgrade - # uses: phoenix-actions/test-reporting@v8 - # id: test-parallel-report-before - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created - # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-parallel-*.json # Path to test results - # reporter: mochawesome-json - # fail-on-error: 'false' - - # - name: Run Sequential tests before Node Parachain upgrade - # if: success() || failure() - # working-directory: ${{ matrix.mainnet_branch }}/tests - # run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW} - # env: - # RPC_URL: http://127.0.0.1:9933/ - - # - name: Upload Sequential Test Report Before Node upgrade - # uses: phoenix-actions/test-reporting@v8 - # id: test-sequential-report-before - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created - # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-sequential-*.json # Path to test results - # reporter: mochawesome-json - # fail-on-error: 'false' - - - name: Send SIGUSR1 to polkadot-launch process - if: success() || failure() - run: | - #Get PID of polkadot-launch - ContainerID=$(docker ps -aqf "name=node-parachain") - PID=$(docker exec node-parachain pidof 'polkadot-launch') - sleep 30s - echo -e "Show logs of node-parachain container.\n" - docker logs ${ContainerID} - echo -e "\n" - echo -e "Restart polkadot-launch process: $PID\n" - docker exec node-parachain kill -SIGUSR1 ${PID} - echo "SIGUSR1 sent to Polkadot-launch PID: $PID" - docker logs ${ContainerID} - - - name: Get chain logs in case of docker image crashed after Polkadot Launch restart - if: failure() # run this step only at failure - run: | - docker exec node-parachain cat /polkadot-launch/9944.log - docker exec node-parachain cat /polkadot-launch/9945.log - docker exec node-parachain cat /polkadot-launch/alice.log - docker exec node-parachain cat /polkadot-launch/eve.log - docker exec node-parachain cat /polkadot-launch/dave.log - docker exec node-parachain cat /polkadot-launch/charlie.log - - - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade. - if: success() - run: | - counter=160 - function check_container_status { - docker inspect -f {{.State.Running}} node-parachain - } - function do_docker_logs { - docker logs --details node-parachain 2>&1 - } - function is_started { - if [ "$(check_container_status)" == "true" ]; then - echo "Container: node-parachain RUNNING"; - echo "Check Docker logs" - DOCKER_LOGS=$(do_docker_logs) - if [[ ${DOCKER_LOGS} = *"All parachain collators restarted with the new binaries."* ]];then - echo "🌗 All parachain collators restarted with the new binaries." - return 0 - else - echo "Message not found in logs output, repeating..." - return 1 - fi - else - echo "Container node-parachain NOT RUNNING" - echo "Halting all future checks" - exit 1 - fi - echo "something goes wrong" - exit 1 - } - while ! is_started; do - echo "Waiting for special message in log files " - sleep 30s - counter=$(( $counter - 1 )) - echo "Counter: $counter" - if [ "$counter" -gt "0" ]; then - continue - else - break - fi - done - echo "Halting script" - exit 0 - shell: bash - - ## TODO: Remove next two blocks before switch to Parrallel & Sequental tests. Uncoment commented blocks. - - name: Run tests after Node Parachain upgrade - working-directory: ${{ matrix.mainnet_branch }}/tests - run: | - yarn install - yarn add mochawesome - echo "Ready to start tests" - yarn polkadot-types - NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-after-${NOW} - env: - RPC_URL: http://127.0.0.1:9933/ - - - name: Test Report After Node upgrade - uses: phoenix-actions/test-reporting@v8 - id: test-report-after - if: success() || failure() # run this step even if previous step failed - with: - name: Tests after node upgrade ${{ matrix.network }} # Name of the check run which will be created - path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-after-*.json # Path to test results - reporter: mochawesome-json - fail-on-error: 'false' - - # TODO uncomment thease steps after the merge - #- name: Run Parallel tests after Node Parachain upgrade - # working-directory: ${{ matrix.mainnet_branch }}/tests - # run: | - # yarn install - # yarn add mochawesome - # node scripts/readyness.js - # echo "Ready to start tests" - # yarn polkadot-types - # NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW} - # env: - # RPC_URL: http://127.0.0.1:9933/ - - #- name: Test Report Parallel After Node upgrade - # uses: phoenix-actions/test-reporting@v8 - # id: test-report-parallel-after - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Tests after node upgrade ${{ matrix.network }} # Name of the check run which will be created - # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-parallel-*.json # Path to test results - # reporter: mochawesome-json - # fail-on-error: 'false' - - #- name: Run Sequential tests after Node Parachain upgrade - # if: success() || failure() - # working-directory: ${{ matrix.mainnet_branch }}/tests - # run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW} - # env: - # RPC_URL: http://127.0.0.1:9933/ - - #- name: Upload Sequential Test Report After Node upgrade - # uses: phoenix-actions/test-reporting@v8 - # id: test-sequential-report-after - # if: success() || failure() # run this step even if previous step failed - # with: - # name: Tests before node upgrade ${{ matrix.network }} # Name of the check run which will be created - # path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-sequential-*.json # Path to test results - # reporter: mochawesome-json - # fail-on-error: 'false' - - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" down --volumes - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f -a - docker system prune -f - docker image prune -f -a - - - name: Remove repo at the end - if: always() # run this step always - run: | - ls -ls ./ --- a/.github/workflows/test_codestyle_v2.yml +++ /dev/null @@ -1,24 +0,0 @@ -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586804253/Yarn+eslint -# Yarn Eslint over tests -# -name: yarn eslint - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - -jobs: - code_style: - runs-on: [ self-hosted-ci ] - - steps: - - uses: actions/checkout@v3 - - - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Install modules - run: cd tests && yarn - - name: Run ESLint - run: cd tests && yarn eslint --ext .ts,.js src/ --- /dev/null +++ b/.github/workflows/try-runtime.yml @@ -0,0 +1,79 @@ +# Try-runtime checks +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2587656213/Try+runtime + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + try-runtime: + # The type of runner that the job will run on + runs-on: self-hosted-ci + + name: ${{ matrix.network }}-try-runtime + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: + - network: opal + features: opal-runtime + replica_from_address: wss://eu-ws-opal.unique.network:443 + - network: quartz + features: quartz-runtime + replica_from_address: wss://eu-ws-quartz.unique.network:443 + - network: unique + features: unique-runtime + replica_from_address: wss://eu-ws.unique.network:443 + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.try-runtime.j2 + output_file: .docker/docker-compose.try-runtime.${{ matrix.network }}.yml + variables: | + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + FEATURE=${{ matrix.features }} + REPLICA_FROM=${{ matrix.replica_from_address }} + + - name: Show build configuration + run: cat .docker/docker-compose.try-runtime.${{ matrix.network }}.yml + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-try-runtime.yml" -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" up --build --force-recreate --timeout 300 --remove-orphans --exit-code-from try-runtime + + - name: Collect Docker Logs + if: success() || failure() + uses: jwalton/gh-docker-logs@v2.2.0 + with: + dest: './try-runtime-logs.${{ matrix.network }}' + images: 'try-runtime' + + - name: Show docker logs + run: cat './try-runtime-logs.${{ matrix.network }}/try-runtime.log' + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-try-runtime.yml" -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" down + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f + docker image prune -f -a --- a/.github/workflows/try-runtime_v2.yml +++ /dev/null @@ -1,79 +0,0 @@ -# Try-runtime checks -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2587656213/Try+runtime - -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - try-runtime: - # The type of runner that the job will run on - runs-on: self-hosted-ci - - name: ${{ matrix.network }}-try-runtime - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - strategy: - matrix: - include: - - network: opal - features: opal-runtime - replica_from_address: wss://eu-ws-opal.unique.network:443 - - network: quartz - features: quartz-runtime - replica_from_address: wss://eu-ws-quartz.unique.network:443 - - network: unique - features: unique-runtime - replica_from_address: wss://eu-ws.unique.network:443 - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/docker-compose.try-runtime.j2 - output_file: .docker/docker-compose.try-runtime.${{ matrix.network }}.yml - variables: | - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - FEATURE=${{ matrix.features }} - REPLICA_FROM=${{ matrix.replica_from_address }} - - - name: Show build configuration - run: cat .docker/docker-compose.try-runtime.${{ matrix.network }}.yml - - - name: Build the stack - run: docker-compose -f ".docker/docker-compose-try-runtime.yml" -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" up --build --force-recreate --timeout 300 --remove-orphans --exit-code-from try-runtime - - - name: Collect Docker Logs - if: success() || failure() - uses: jwalton/gh-docker-logs@v2.2.0 - with: - dest: './try-runtime-logs.${{ matrix.network }}' - images: 'try-runtime' - - - name: Show docker logs - run: cat './try-runtime-logs.${{ matrix.network }}/try-runtime.log' - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f ".docker/docker-compose-try-runtime.yml" -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" down - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f -a - docker system prune -f - docker image prune -f -a --- /dev/null +++ b/.github/workflows/unit-test.yml @@ -0,0 +1,60 @@ +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586738699/Unit+Tests +# Re-Usable Workflow for lanching Unit tests +name: unit tests + +# Controls when the action will run. +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + unit_tests: + # The type of runner that the job will run on + runs-on: [self-hosted-ci,medium] + timeout-minutes: 1380 + + name: ${{ github.base_ref }} + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-unit.j2 + output_file: .docker/docker-compose.unit.yml + variables: | + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + + + - name: Show build configuration + run: cat .docker/docker-compose.unit.yml + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.unit.yml" up --build --force-recreate --timeout 300 --remove-orphans --exit-code-from node-dev + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.unit.yml" down + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f + docker image prune -f -a --- a/.github/workflows/unit-test_v2.yml +++ /dev/null @@ -1,60 +0,0 @@ -# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586738699/Unit+Tests -# Re-Usable Workflow for lanching Unit tests -name: unit tests - -# Controls when the action will run. -# Triger: only call from main workflow(re-usable workflows) -on: - workflow_call: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - unit_tests: - # The type of runner that the job will run on - runs-on: [self-hosted-ci,medium] - timeout-minutes: 1380 - - name: ${{ github.base_ref }} - - continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - - - steps: - - - name: Clean Workspace - uses: AutoModality/action-clean@v1.1.0 - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - with: - ref: ${{ github.head_ref }} #Checking out head commit - - - name: Read .env file - uses: xom9ikk/dotenv@v2 - - - name: Generate ENV related extend file for docker-compose - uses: cuchi/jinja2-action@v1.2.0 - with: - template: .docker/docker-compose.tmp-unit.j2 - output_file: .docker/docker-compose.unit.yml - variables: | - RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - - - - name: Show build configuration - run: cat .docker/docker-compose.unit.yml - - - name: Build the stack - run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.unit.yml" up --build --force-recreate --timeout 300 --remove-orphans --exit-code-from node-dev - - - name: Stop running containers - if: always() # run this step always - run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.unit.yml" down - - - name: Remove builder cache - if: always() # run this step always - run: | - docker builder prune -f -a - docker system prune -f - docker image prune -f -a --- /dev/null +++ b/.github/workflows/yarn-dev.yml @@ -0,0 +1,101 @@ +# Integration test in --dev mode +# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586411104/Integration+tests +name: yarn dev + +# Triger: only call from main workflow(re-usable workflows) +on: + workflow_call: + + + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + dev_build_int_tests: + # The type of runner that the job will run on + runs-on: [self-hosted-ci,medium] + timeout-minutes: 1380 + + name: ${{ matrix.network }} + + continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: + - network: "opal" + features: "opal-runtime" + - network: "quartz" + features: "quartz-runtime" + - network: "unique" + features: "unique-runtime" + + steps: + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-dev.j2 + output_file: .docker/docker-compose.${{ matrix.network }}.yml + variables: | + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + FEATURE=${{ matrix.features }} + + + - name: Show build configuration + run: cat .docker/docker-compose.${{ matrix.network }}.yml + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --remove-orphans + + - uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Run tests + working-directory: tests + run: | + yarn install + yarn add mochawesome + node scripts/readyness.js + echo "Ready to start tests" + yarn polkadot-types + NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW} + env: + RPC_URL: http://127.0.0.1:9933/ + + - name: Test Report + uses: phoenix-actions/test-reporting@v8 + id: test-report + if: success() || failure() # run this step even if previous step failed + with: + name: int test results - ${{ matrix.network }} # Name of the check run which will be created + path: tests/mochawesome-report/test-*.json # Path to test results + reporter: mochawesome-json + fail-on-error: 'false' + + - name: Read output variables + run: | + echo "url is ${{ steps.test-report.outputs.runHtmlUrl }}" + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f -a + docker system prune -f + docker image prune -f -a -- gitstuff