1234name: nodes-only update567on:8 workflow_call:9101112jobs: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 28 - uses: actions/checkout@v3.1.029 with:30 ref: ${{ github.head_ref }} 3132 - 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:4647 needs: prepare-execution-matrix48 49 runs-on: [self-hosted-ci]5051 timeout-minutes: 2880 5253 name: ${{ matrix.network }}5455 continue-on-error: true 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 71 - uses: actions/checkout@v3.1.072 with:73 ref: ${{ github.head_ref }} 7475 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 141 ref: ${{ matrix.mainnet_branch }} 142 path: ${{ matrix.mainnet_branch }}143144 - uses: actions/setup-node@v3.5.1145 with:146 node-version: 18.17.1 147148 - 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=${{ env.RELAY_CHAIN_TYPE }}-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 }}'}})166167 - name: Run Parallel tests before Node Parachain upgrade168 working-directory: ${{ matrix.mainnet_branch }}/tests169 if: success()170 run: |171 yarn172 yarn add mochawesome173 # TODO: Update to new script structure after mainnet will have it174 ./scripts/wait_for_first_block.sh175 echo "Ready to start tests"176 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}177 env:178 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}179180 - name: Run Sequential tests before Node Parachain upgrade181 if: success() || failure()182 working-directory: ${{ matrix.mainnet_branch }}/tests183 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}184 env:185 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}186187 - name: "Reconcile: only one old node"188 if: success() || failure()189 uses: UniqueNetwork/baedeker-action/reconcile@built190 with:191 baedeker: ${{ steps.bdk.outputs.baedeker }}192 193 inputs: |194 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, leave = 1, for_chain = false)195 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, for_chain = false)196 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})197198 - name: Ensure network is alive199 if: success()200 run: |201 ./js-packages/scripts/wait_for_first_block.sh202 env:203 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}204205 - name: "Reconcile: all nodes are updated"206 if: success() || failure()207 uses: UniqueNetwork/baedeker-action/reconcile@built208 with:209 baedeker: ${{ steps.bdk.outputs.baedeker }}210 211 inputs: |212 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, for_chain = false)213 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})214215 - name: Run Parallel tests after Node Parachain upgrade216 working-directory: ${{ matrix.mainnet_branch }}/tests217 if: success() || failure() 218 run: |219 yarn install220 yarn add mochawesome221 # TODO: Update to new script structure after mainnet will have it222 ./scripts/wait_for_first_block.sh223 echo "Ready to start tests"224 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}225 env:226 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}227228 - name: Run Sequential tests after Node Parachain upgrade229 if: success() || failure()230 working-directory: ${{ matrix.mainnet_branch }}/tests231 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}232 env:233 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}234235 - name: Remove builder cache236 if: always() 237 run: |238 docker system prune -f