12345name: forkless-update-nodata67on:8 workflow_call:9 workflow_dispatch:10111213jobs:1415 prepare-execution-matrix:1617 name: execution matrix1819 runs-on: [ self-hosted-ci ]20 outputs:21 matrix: ${{ steps.create_matrix.outputs.matrix }}2223 steps:2425 - name: Clean Workspace26 uses: AutoModality/action-clean@v1.1.02728 29 - uses: actions/checkout@v4.1.730 with:31 ref: ${{ github.head_ref }} 3233 - name: Read .env file34 uses: xom9ikk/dotenv@v2.3.03536 - name: Create Execution matrix37 uses: CertainLach/create-matrix-action@v438 id: create_matrix39 with:40 matrix: |41 network {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}42 network {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}43 network {unique}, mainnet_branch {${{ env.UNIQUE_MAINNET_BRANCH }}}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}4445 forkless-nodata:4647 needs: prepare-execution-matrix48 49 runs-on: [ self-hosted-ci,large ]5051 timeout-minutes: 13805253 name: ${{ matrix.network }}-nodata5455 continue-on-error: true 5657 strategy:58 matrix:59 include: ${{fromJson(needs.prepare-execution-matrix.outputs.matrix)}}6061 steps:6263 - name: Clean Workspace64 uses: AutoModality/action-clean@v1.1.06566 67 - uses: actions/checkout@v4.1.768 with:69 ref: ${{ github.head_ref }} 7071 72 - name: Prepare SHA73 uses: ./.github/actions/prepare7475 - name: Read .env file76 uses: xom9ikk/dotenv@v2.3.07778 - name: Log in to Docker Hub79 uses: docker/login-action@v3.2.080 with:81 username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}82 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8384 - name: Check and pull polkadot image85 id: polkadot86 uses: cloudposse/github-action-docker-image-exists@main87 with:88 registry: registry.hub.docker.com89 organization: parity90 repository: polkadot91 login: ${{ secrets.CORE_DOCKERHUB_USERNAME }}92 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}93 tag: ${{ matrix.relay_branch }}9495 - name: Prepare mainnet96 uses: ./.github/actions/buildContainer97 id: mainnet98 with:99 container: uniquenetwork/ci-nodata-${{ matrix.network }}100 tag: ${{ matrix.mainnet_branch }}101 context: .docker102 dockerfile: Dockerfile-unique-release103 args: |104 --build-arg NETWORK=${{ matrix.network }}105 --build-arg UNIQUE_VERSION=${{ matrix.mainnet_branch }}106 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}107 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}108109 - name: Prepare latest110 uses: ./.github/actions/buildContainer111 id: latest112 with:113 container: uniquenetwork/ci-nodata-${{ matrix.network }}114 tag: ${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}115 context: .116 dockerfile: .docker/Dockerfile-unique117 args: |118 --build-arg FEATURES=${{ matrix.network }}-runtime119 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}120 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}121122 - name: Extract wasms123 uses: ./.github/actions/extractDocker124 id: wasms125 with:126 image: ${{ steps.latest.outputs.name }}127 directory: /wasm128129 - uses: actions/setup-node@v4.0.2130 with:131 node-version: 20132133 - name: Install baedeker134 uses: UniqueNetwork/baedeker-action/setup@v1-no-debug-output135 with:136 useCache: false 137138 - name: Setup library139 run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library140141 - name: Start network142 uses: UniqueNetwork/baedeker-action@v1-no-debug-output143 id: bdk144 if: success()145 with:146 jpath: |147 .baedeker/vendor148 tla-str: |149 relay_spec=${{ env.RELAY_CHAIN_TYPE }}-local150 inputs: |151 .baedeker/node-only.jsonnet152 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'${{ steps.polkadot.outputs.image }}:${{ steps.polkadot.outputs.tag }}'}})153 # nodata build uses old runtime, but new chain, thus we use mainnet image for spec generation, and then latest image for nodes.154 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, extra_node_mixin={extraArgs: []}, for_chain = false)155 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin={extraArgs: []})156157 - name: Ensure network is alive158 working-directory: js-packages/tests159 id: alive1160 if: ${{ !cancelled() && steps.bdk.outcome == 'success' }}161 run: |162 yarn163 yarn add mochawesome164 ../scripts/wait_for_first_block.sh165 env:166 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}167168 - name: "Reconcile: runtime is upgraded"169 working-directory: js-packages/tests170 id: reconcile1171 if: ${{ !cancelled() && steps.alive1.outcome == 'success' }}172 run: |173 echo "Executing upgrade"174 yarn node --no-warnings=ExperimentalWarning --loader ts-node/esm ../scripts/authorizeEnactUpgrade.ts ${{ steps.wasms.outputs.dir }}/${{ matrix.network }}-runtime/${{ matrix.network }}_runtime.compact.compressed.wasm175 env:176 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}177178 - name: Ensure network is alive179 working-directory: js-packages/tests180 id: alive2181 if: ${{ !cancelled() && steps.reconcile1.outcome == 'success' }}182 run: |183 ../scripts/wait_for_first_block.sh184 env:185 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }} 186187 - name: Run Parallel tests after forkless upgrade188 working-directory: js-packages/tests189 if: ${{ !cancelled() && steps.alive2.outcome == 'success' }}190 run: |191 echo "Ready to start tests"192 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}193 env:194 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}195196 - name: Run Sequential tests after forkless upgrade197 working-directory: js-packages/tests198 if: ${{ !cancelled() && steps.alive2.outcome == 'success' }}199 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}200 env:201 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}202203 - name: Remove builder cache204 if: always() 205 run: |206 docker system prune -f