difftreelog
ci move collator selection to baedeker (#979)
in: master
* modify collator selection workflow for baedeker * fix collator selection workflow for baedeker * add modify in spec for collator selection workflow * test: also accept sapphire as substrateUrl * modify workflow collator-selection for baedeker * ci: remove unused collator-selection setups ---------
4 files changed
.baedeker/collator-selection.jsonnetdiffbeforeafterboth--- /dev/null
+++ b/.baedeker/collator-selection.jsonnet
@@ -0,0 +1,43 @@
+local
+m = import 'baedeker-library/mixin/spec.libsonnet',
+;
+
+local relay = {
+ name: 'relay',
+ bin: 'bin/polkadot',
+ validatorIdAssignment: 'staking',
+ spec: {Genesis:{
+ chain: 'rococo-local',
+ modify:: m.genericRelay($),
+ }},
+ nodes: {
+ [name]: {
+ bin: $.bin,
+ wantedKeys: 'relay',
+ },
+ for name in ['alice', 'bob', 'charlie', 'dave', 'eve']
+ },
+};
+
+local unique = {
+ name: 'unique',
+ bin: 'bin/unique',
+ paraId: 1001,
+ spec: {Genesis:{
+ modify:: m.genericPara($),
+ }},
+ nodes: {
+ [name]: {
+ bin: $.bin,
+ wantedKeys: 'para',
+ },
+ for name in ['alice', 'bob']
+ },
+};
+
+relay + {
+ parachains: {
+ [para.name]: para,
+ for para in [unique]
+ },
+}
.github/workflows/collator-selection.ymldiffbeforeafterboth--- a/.github/workflows/collator-selection.yml
+++ b/.github/workflows/collator-selection.yml
@@ -1,15 +1,24 @@
name: collator-selection-test-run
-# Triger: only call from main workflow(re-usable workflows)
+# Controls when the action will run.
on:
workflow_call:
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+#Define Workflow variables
+env:
+ REPO_URL: ${{ github.server_url }}/${{ github.repository }}
+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
+
prepare-execution-marix:
+
name: Prepare execution matrix
- runs-on: self-hosted-ci
+ runs-on: [self-hosted-ci]
outputs:
matrix: ${{ steps.create_matrix.outputs.matrix }}
@@ -19,7 +28,7 @@
uses: AutoModality/action-clean@v1.1.0
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v3.1.0
with:
ref: ${{ github.head_ref }} #Checking out head commit
@@ -27,99 +36,24 @@
uses: xom9ikk/dotenv@v2
- name: Create Execution matrix
- uses: CertainLach/create-matrix-action@v3
+ uses: CertainLach/create-matrix-action@v4
id: create_matrix
with:
matrix: |
- network {opal}, wasm_name {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}
- network {quartz}, wasm_name {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}
- network {sapphire}, wasm_name {quartz}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, replica_from_address {${{ env.SAPPHIRE_REPLICA_FROM }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}}
+ network {opal}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}
+ network {quartz}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}
+ network {sapphire}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}}
+
+ collator-selection:
- collator-selection-build:
needs: prepare-execution-marix
# The type of runner that the job will run on
runs-on: [self-hosted-ci,large]
- timeout-minutes: 1380
-
- name: ${{ matrix.network }}-build
- strategy:
- matrix:
- include: ${{fromJson(needs.prepare-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
-
- # Prepare SHA
- - name: Prepare SHA
- uses: ./.github/actions/prepare
-
- # Build main image for FORKLESS-UPDATE-NODATA
- - name: Generate ENV related extend Dockerfile file
- uses: cuchi/jinja2-action@v1.2.0
- with:
- template: .docker/Dockerfile-collators.j2
- output_file: .docker/Dockerfile-collators.${{ matrix.network }}.yml
- variables: |
- RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
- NETWORK=${{ matrix.network }}
- POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }}
- POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}
- BRANCH=${{ github.head_ref }}
- - name: Show build configuration
- run: cat .docker/Dockerfile-collators.${{ matrix.network }}.yml
-
- - name: Run find-and-replace to remove slashes from branch name
- uses: mad9000/actions-find-and-replace-string@4
- id: branchname
- with:
- source: ${{ github.head_ref }}
- find: '/'
- replace: '-'
-
- - name: Set build SHA
- shell: bash
- run: |
- echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV
+ timeout-minutes: 1380
- - name: Build the stack
- run: cd .docker/ && docker build --no-cache --file ./Dockerfile-collators.${{ matrix.network }}.yml --tag uniquenetwork/ci-collator-selection-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA ../
-
- - name: Log in to Docker Hub
- uses: docker/login-action@v2.1.0
- with:
- username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
- password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
-
- - name: Push docker image version
- run: docker push uniquenetwork/ci-collator-selection-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA
-
- - name: Remove builder cache
- if: always() # run this step always
- run: |
- docker builder prune -f
- docker system prune -f
-
- collator-selection-tests:
- needs: [prepare-execution-marix, collator-selection-build]
- # The type of runner that the job will run on
- runs-on: [self-hosted-ci, large]
-
- timeout-minutes: 600
+ name: ${{ matrix.network }}
- name: ${{ matrix.network }}-tests
-
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:
@@ -139,13 +73,18 @@
with:
ref: ${{ github.head_ref }} #Checking out head commit
- - name: Prepare
+ # Prepare SHA
+ - name: Prepare SHA
uses: ./.github/actions/prepare
- - name: Set build SHA
- shell: bash
- run: |
- echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV
+ - name: Read .env file
+ uses: xom9ikk/dotenv@v2
+
+ - name: Log in to Docker Hub
+ uses: docker/login-action@v2.1.0
+ with:
+ username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
+ password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
- name: Run find-and-replace to remove slashes from branch name
uses: mad9000/actions-find-and-replace-string@4
@@ -155,109 +94,114 @@
find: '/'
replace: '-'
- - name: Read .env file
- uses: xom9ikk/dotenv@v2
-
- - name: Generate ENV related extend file for docker-compose
+ - name: Generate ENV related extend Dockerfile file for POLKADOT
uses: cuchi/jinja2-action@v1.2.0
with:
- template: .docker/docker-compose.collators.j2
- output_file: .docker/docker-compose.collators.${{ matrix.network }}.yml
+ template: .docker/Dockerfile-polkadot.j2
+ output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml
variables: |
- NETWORK=${{ matrix.network }}
- BUILD_TAG=${{ steps.branchname.outputs.value }}-$BUILD_SHA
+ RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+ POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}
+
+ - name: Prepare polkadot
+ uses: ./.github/actions/buildContainer
+ id: polkadot
+ with:
+ container: uniquenetwork/builder-polkadot
+ tag: ${{ matrix.relay_branch }}
+ context: .docker
+ dockerfile: Dockerfile-polkadot.${{ matrix.relay_branch }}.yml
+ dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
+ dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
- - name: Show build configuration
- run: cat .docker/docker-compose.collators.${{ matrix.network }}.yml
+ # - name: pull needed images
+ # run: |
+ # docker pull uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}
- - name: Log in to Docker Hub
- uses: docker/login-action@v2.1.0
- with:
- username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
- password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
+ # - name: Build unique-chain
+ # run: |
+ # docker build --file .docker/Dockerfile-unique \
+ # --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }} \
+ # --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} \
+ # --tag uniquenetwork/ci-collator-selection-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }} \
+ # .
- - name: Build the stack
- run: docker-compose -f ".docker/docker-compose.collators.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300
+ # - name: Push docker image version
+ # run: docker push uniquenetwork/ci-collator-selection-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }}
- # 🚀 POLKADOT LAUNCH COMPLETE 🚀
- - name: Check if docker logs consist messages related to testing of collator tests
- if: success()
- run: |
- counter=160
- function check_container_status {
- docker inspect -f {{.State.Running}} collator-selection-${{ matrix.network }}
- }
- function do_docker_logs {
- docker logs --details collator-selection-${{ matrix.network }} 2>&1
- }
- function is_started {
- if [ "$(check_container_status)" == "true" ]; then
- echo "Container: collator-selection-${{ matrix.network }} 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 collator-selection-${{ matrix.network }} 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
- - uses: actions/setup-node@v3
+ - name: Prepare latest
+ uses: ./.github/actions/buildContainer
+ id: latest
with:
+ container: uniquenetwork/ci-collator-selection-local
+ tag: ${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}
+ context: .
+ dockerfile: .docker/Dockerfile-unique
+ args: |
+ --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}
+ --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+ dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}
+ dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}
+
+ - uses: actions/setup-node@v3.5.1
+ with:
node-version: 16
- - name: Run Collator tests
+ - name: Install baedeker
+ uses: UniqueNetwork/baedeker-action/setup@built
+
+ - name: Setup library
+ run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library
+
+ - name: Start network
+ uses: UniqueNetwork/baedeker-action@built
+ id: bdk
+ with:
+ jpath: |
+ .baedeker/vendor
+ tla-str: |
+ relay_spec=westend-local
+ inputs: |
+ .baedeker/collator-selection.jsonnet
+ snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'${{ steps.polkadot.outputs.name }}'}})
+ snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}})
+
+ - name: Upload network config
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ matrix.network }}-network-config
+ path: ${{ steps.bdk.outputs.composeProject }}
+ retention-days: 2
+
+ - name: Run tests
working-directory: tests
- if: success() || failure()
run: |
yarn install
yarn add mochawesome
- node scripts/readyness.js
+ # Wanted by both wait_for_first_block
+ # export RPC_URL="${RELAY_SAPPHIRE_HTTP_URL:-${RELAY_OPAL_HTTP_URL:-${RELAY_QUARTZ_HTTP_URL:-${RELAY_UNIQUE_HTTP_URL:-}}}}"
+ ./scripts/wait_for_first_block.sh
echo "Ready to start tests"
NOW=$(date +%s) && yarn testCollators --reporter mochawesome --reporter-options reportFilename=test-collators-${NOW}
env:
- RPC_URL: http://127.0.0.1:9944/
+ RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}
- - name: Test Report Collator
- uses: phoenix-actions/test-reporting@v8
- id: test-report-collator
- if: success() || failure() # run this step even if previous step failed
+ - name: Test Report
+ uses: phoenix-actions/test-reporting@v10
+ id: test-report
+ if: success() || failure()
with:
- name: Report Collator tests results - ${{ matrix.network }} # Name of the check run which will be created
- path: tests/mochawesome-report/test-collators-*.json # Path to test results
+ name: Collator Selection Tests ${{ matrix.network }}
+ path: tests/mochawesome-report/test-collators-*.json
reporter: mochawesome-json
fail-on-error: 'false'
- - name: Stop running containers
- if: always() # run this step always
- run: docker-compose -f ".docker/docker-compose.collators.${{ matrix.network }}.yml" down
+ - name: Clean Workspace
+ if: always()
+ uses: AutoModality/action-clean@v1.1.0
- name: Remove builder cache
- if: always() # run this step always
+ if: always()
run: |
- docker builder prune -f -a
- docker system prune -f
-
+ docker system prune -a -f
.github/workflows/node-only-update.ymldiffbeforeafterboth1# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837028/Nodes+only+update2# Node only update with restart polkadot-launch process.34name: nodes-only update56# Triger: only call from main workflow(re-usable workflows)7on:8 workflow_call:91011# A workflow run is made up of one or more jobs that can run sequentially or in parallel12jobs:1314 prepare-execution-matrix:1516 name: execution matrix1718 runs-on: self-hosted-ci19 outputs:20 matrix: ${{ steps.create_matrix.outputs.matrix }}2122 steps:2324 - name: Clean Workspace25 uses: AutoModality/action-clean@v1.1.02627 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it28 - uses: actions/checkout@v3.1.029 with:30 ref: ${{ github.head_ref }} #Checking out head commit3132 - name: Read .env file33 uses: xom9ikk/dotenv@v23435 - name: Create Execution matrix36 uses: CertainLach/create-matrix-action@v437 id: create_matrix38 with:39 matrix: |40 network {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, runtime_features {opal-runtime}41 network {sapphire}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}}, runtime_features {sapphire-runtime}42 network {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, runtime_features {quartz-runtime}43 network {unique}, mainnet_branch {${{ env.UNIQUE_MAINNET_BRANCH }}}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, runtime_features {unique-runtime}4445 node-only-update-build:4647 needs: prepare-execution-matrix48 # The type of runner that the job will run on49 runs-on: [self-hosted-ci]5051 timeout-minutes: 2880 # 48 hours for execution jobs.5253 name: ${{ matrix.network }}-build5455 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.5657 strategy:58 matrix:59 include: ${{fromJson(needs.prepare-execution-matrix.outputs.matrix)}}6061 steps:6263 - name: Skip if pull request is in Draft64 if: github.event.pull_request.draft == true65 run: exit 16667 - name: Clean Workspace68 uses: AutoModality/action-clean@v1.1.06970 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it71 - uses: actions/checkout@v3.1.072 with:73 ref: ${{ github.head_ref }} #Checking out head commit7475 # Prepare SHA 76 - name: Prepare SHA77 uses: ./.github/actions/prepare7879 - name: Read .env file80 uses: xom9ikk/dotenv@v28182 - name: Log in to Docker Hub83 uses: docker/login-action@v2.1.084 with:85 username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}86 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8788 - name: Generate ENV related extend Dockerfile file for POLKADOT89 uses: cuchi/jinja2-action@v1.2.090 with:91 template: .docker/Dockerfile-polkadot.j292 output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml93 variables: |94 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}95 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}96 - name: Prepare polkadot97 uses: ./.github/actions/buildContainer98 id: polkadot99 with:100 container: uniquenetwork/builder-polkadot101 tag: ${{ matrix.relay_branch }}102 context: .docker103 dockerfile: Dockerfile-polkadot.${{ matrix.relay_branch }}.yml104 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}105 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}106107 - name: Prepare mainnet108 uses: ./.github/actions/buildContainer109 id: mainnet110 with:111 container: uniquenetwork/ci-node-only-${{ matrix.network }}112 tag: ${{ matrix.mainnet_branch }}113 context: .docker114 dockerfile: Dockerfile-unique-release115 args: |116 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}117 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}118 --build-arg UNIQUE_VERSION=${{ matrix.mainnet_branch }}119 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}120 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}121122 - name: Prepare latest123 uses: ./.github/actions/buildContainer124 id: latest125 with:126 container: uniquenetwork/ci-node-only-${{ matrix.network }}127 tag: ${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}128 context: .129 dockerfile: .docker/Dockerfile-unique130 args: |131 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}132 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}133 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}134 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}135136 - name: Checkout at '${{ matrix.mainnet_branch }}' branch137 uses: actions/checkout@master138 with:139 ref: ${{ github.head_ref }}140 # ref: ${{ matrix.mainnet_branch }} #Checking out head commit141 path: ${{ matrix.mainnet_branch }}142143 - uses: actions/setup-node@v3.5.1144 with:145 node-version: 16146147 - name: Install baedeker148 uses: UniqueNetwork/baedeker-action/setup@built149150 - name: Setup library151 run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library152153 - name: Start network154 uses: UniqueNetwork/baedeker-action@built155 id: bdk156 with:157 jpath: |158 .baedeker/vendor159 tla-str: |160 relay_spec=westend-local161 inputs: |162 .baedeker/node-only.jsonnet163 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'${{ steps.polkadot.outputs.name }}'}})164 ephemeral:snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin = {legacyRpc: true})165166 - name: Run Parallel tests before Node Parachain upgrade167 working-directory: ${{ matrix.mainnet_branch }}/tests168 if: success() || failure()169 run: |170 yarn171 yarn add mochawesome172 ./scripts/wait_for_first_block.sh173 echo "Ready to start tests"174 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}175 env:176 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}177178 - name: Run Sequential tests before Node Parachain upgrade179 if: success() || failure()180 working-directory: ${{ matrix.mainnet_branch }}/tests181 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}182 env:183 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}184185 - name: "Reconcile: only one old node"186 if: success() || failure()187 uses: UniqueNetwork/baedeker-action/reconcile@built188 with:189 baedeker: ${{ steps.bdk.baedeker }}190 # Chain should always be built with the mainnet spec, this we first set binary for all nodes expect one, then set mainnet binary for the last node, and then force chainspec to be still generated from mainnet191 inputs: |192 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, leave = 1, for_chain = false)193 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin = {legacyRpc: true}, for_chain = false)194 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})195196 - name: Ensure network is alive197 if: success() || failure() # run this step even if previous step failed198 run: |199 ./tests/scripts/wait_for_first_block.sh200 env:201 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}202203 - name: "Reconcile: all nodes are updated"204 if: success() || failure()205 uses: UniqueNetwork/baedeker-action/reconcile@built206 with:207 baedeker: ${{ steps.bdk.baedeker }}208 # Chain should always be built with the mainnet spec, this we first set binary for all nodes, and then force chainspec to be still generated from mainnet209 inputs: |210 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, for_chain = false)211 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})212213 - name: Run Parallel tests after Node Parachain upgrade214 working-directory: ${{ matrix.mainnet_branch }}/tests215 if: success() || failure() # run this step even if previous step failed216 run: |217 yarn install218 yarn add mochawesome219 ./scripts/wait_for_first_block.sh220 echo "Ready to start tests"221 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}222 env:223 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}224225 - name: Run Sequential tests after Node Parachain upgrade226 if: success() || failure()227 working-directory: ${{ matrix.mainnet_branch }}/tests228 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}229 env:230 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}231232 - name: Remove builder cache233 if: always() # run this step always234 run: |235 docker system prune -f1# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837028/Nodes+only+update2# Node only update with restart polkadot-launch process.34name: nodes-only update56# Triger: only call from main workflow(re-usable workflows)7on:8 workflow_call:91011# A workflow run is made up of one or more jobs that can run sequentially or in parallel12jobs:1314 prepare-execution-matrix:1516 name: execution matrix1718 runs-on: self-hosted-ci19 outputs:20 matrix: ${{ steps.create_matrix.outputs.matrix }}2122 steps:2324 - name: Clean Workspace25 uses: AutoModality/action-clean@v1.1.02627 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it28 - uses: actions/checkout@v3.1.029 with:30 ref: ${{ github.head_ref }} #Checking out head commit3132 - name: Read .env file33 uses: xom9ikk/dotenv@v23435 - name: Create Execution matrix36 uses: CertainLach/create-matrix-action@v437 id: create_matrix38 with:39 matrix: |40 network {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, runtime_features {opal-runtime}41 network {sapphire}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}}, runtime_features {sapphire-runtime}42 network {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, runtime_features {quartz-runtime}43 network {unique}, mainnet_branch {${{ env.UNIQUE_MAINNET_BRANCH }}}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, runtime_features {unique-runtime}4445 node-only-update-build:4647 needs: prepare-execution-matrix48 # The type of runner that the job will run on49 runs-on: [self-hosted-ci]5051 timeout-minutes: 2880 # 48 hours for execution jobs.5253 name: ${{ matrix.network }}-build5455 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.5657 strategy:58 matrix:59 include: ${{fromJson(needs.prepare-execution-matrix.outputs.matrix)}}6061 steps:6263 - name: Skip if pull request is in Draft64 if: github.event.pull_request.draft == true65 run: exit 16667 - name: Clean Workspace68 uses: AutoModality/action-clean@v1.1.06970 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it71 - uses: actions/checkout@v3.1.072 with:73 ref: ${{ github.head_ref }} #Checking out head commit7475 # Prepare SHA 76 - name: Prepare SHA77 uses: ./.github/actions/prepare7879 - name: Read .env file80 uses: xom9ikk/dotenv@v28182 - name: Log in to Docker Hub83 uses: docker/login-action@v2.1.084 with:85 username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}86 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8788 - name: Generate ENV related extend Dockerfile file for POLKADOT89 uses: cuchi/jinja2-action@v1.2.090 with:91 template: .docker/Dockerfile-polkadot.j292 output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml93 variables: |94 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}95 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}96 97 - name: Prepare polkadot98 uses: ./.github/actions/buildContainer99 id: polkadot100 with:101 container: uniquenetwork/builder-polkadot102 tag: ${{ matrix.relay_branch }}103 context: .docker104 dockerfile: Dockerfile-polkadot.${{ matrix.relay_branch }}.yml105 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}106 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}107108 - name: Prepare mainnet109 uses: ./.github/actions/buildContainer110 id: mainnet111 with:112 container: uniquenetwork/ci-node-only-${{ matrix.network }}113 tag: ${{ matrix.mainnet_branch }}114 context: .docker115 dockerfile: Dockerfile-unique-release116 args: |117 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}118 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}119 --build-arg UNIQUE_VERSION=${{ matrix.mainnet_branch }}120 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}121 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}122123 - name: Prepare latest124 uses: ./.github/actions/buildContainer125 id: latest126 with:127 container: uniquenetwork/ci-node-only-${{ matrix.network }}128 tag: ${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}129 context: .130 dockerfile: .docker/Dockerfile-unique131 args: |132 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}133 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}134 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}135 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}136137 - name: Checkout at '${{ matrix.mainnet_branch }}' branch138 uses: actions/checkout@master139 with:140 ref: ${{ github.head_ref }}141 # ref: ${{ matrix.mainnet_branch }} #Checking out head commit142 path: ${{ matrix.mainnet_branch }}143144 - uses: actions/setup-node@v3.5.1145 with:146 node-version: 16147148 - name: Install baedeker149 uses: UniqueNetwork/baedeker-action/setup@built150151 - name: Setup library152 run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library153154 - name: Start network155 uses: UniqueNetwork/baedeker-action@built156 id: bdk157 with:158 jpath: |159 .baedeker/vendor160 tla-str: |161 relay_spec=westend-local162 inputs: |163 .baedeker/node-only.jsonnet164 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'${{ steps.polkadot.outputs.name }}'}})165 ephemeral:snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin = {legacyRpc: true})166167 - name: Run Parallel tests before Node Parachain upgrade168 working-directory: ${{ matrix.mainnet_branch }}/tests169 if: success() || failure()170 run: |171 yarn172 yarn add mochawesome173 ./scripts/wait_for_first_block.sh174 echo "Ready to start tests"175 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}176 env:177 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}178179 - name: Run Sequential tests before Node Parachain upgrade180 if: success() || failure()181 working-directory: ${{ matrix.mainnet_branch }}/tests182 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}183 env:184 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}185186 - name: "Reconcile: only one old node"187 if: success() || failure()188 uses: UniqueNetwork/baedeker-action/reconcile@built189 with:190 baedeker: ${{ steps.bdk.baedeker }}191 # Chain should always be built with the mainnet spec, this we first set binary for all nodes expect one, then set mainnet binary for the last node, and then force chainspec to be still generated from mainnet192 inputs: |193 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, leave = 1, for_chain = false)194 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin = {legacyRpc: true}, for_chain = false)195 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})196197 - name: Ensure network is alive198 if: success() || failure() # run this step even if previous step failed199 run: |200 ./tests/scripts/wait_for_first_block.sh201 env:202 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}203204 - name: "Reconcile: all nodes are updated"205 if: success() || failure()206 uses: UniqueNetwork/baedeker-action/reconcile@built207 with:208 baedeker: ${{ steps.bdk.baedeker }}209 # Chain should always be built with the mainnet spec, this we first set binary for all nodes, and then force chainspec to be still generated from mainnet210 inputs: |211 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, for_chain = false)212 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})213214 - name: Run Parallel tests after Node Parachain upgrade215 working-directory: ${{ matrix.mainnet_branch }}/tests216 if: success() || failure() # run this step even if previous step failed217 run: |218 yarn install219 yarn add mochawesome220 ./scripts/wait_for_first_block.sh221 echo "Ready to start tests"222 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}223 env:224 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}225226 - name: Run Sequential tests after Node Parachain upgrade227 if: success() || failure()228 working-directory: ${{ matrix.mainnet_branch }}/tests229 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}230 env:231 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}232233 - name: Remove builder cache234 if: always() # run this step always235 run: |236 docker system prune -ftests/src/config.tsdiffbeforeafterboth--- a/tests/src/config.ts
+++ b/tests/src/config.ts
@@ -18,7 +18,7 @@
const config = {
relayUrl: process.env.RELAY_URL || 'ws://127.0.0.1:9844',
- substrateUrl: process.env.RELAY_OPAL_URL || process.env.RELAY_QUARTZ_URL || process.env.RELAY_UNIQUE_URL || 'ws://127.0.0.1:9944',
+ substrateUrl: process.env.RELAY_OPAL_URL || process.env.RELAY_QUARTZ_URL || process.env.RELAY_UNIQUE_URL || process.env.RELAY_SAPPHIRE_URL || 'ws://127.0.0.1:9944',
acalaUrl: process.env.RELAY_ACALA_URL || 'ws://127.0.0.1:9946',
karuraUrl: process.env.RELAY_KARURA_URL || 'ws://127.0.0.1:9946',
moonbeamUrl: process.env.RELAY_MOONBEAM_URL || 'ws://127.0.0.1:9947',