12345on:6 workflow_call:78910jobs:1112 prepare-execution-matrix:1314 name: execution matrix1516 runs-on: self-hosted-ci17 outputs:18 matrix: ${{ steps.create_matrix.outputs.matrix }}1920 steps:2122 - name: Clean Workspace23 uses: AutoModality/action-clean@v1.1.02425 26 - uses: actions/checkout@v3.1.027 with:28 ref: ${{ github.head_ref }} 2930 - name: Read .env file31 uses: xom9ikk/dotenv@v23233 - name: Create Execution matrix34 uses: CertainLach/create-matrix-action@v435 id: create_matrix36 with:37 matrix: |38 network {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, runtime_features {opal-runtime}, wasm_name {opal}39 network {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, runtime_features {quartz-runtime}, wasm_name {quartz}40 network {unique}, mainnet_branch {${{ env.UNIQUE_MAINNET_BRANCH }}}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, runtime_features {unique-runtime}, wasm_name {unique}4142 forkless-nodata:4344 needs: prepare-execution-matrix45 46 runs-on: [self-hosted-ci,large]4748 timeout-minutes: 13804950 name: ${{ matrix.network }}-nodata5152 continue-on-error: true 5354 strategy:55 matrix:56 include: ${{fromJson(needs.prepare-execution-matrix.outputs.matrix)}}5758 steps:5960 - name: Clean Workspace61 uses: AutoModality/action-clean@v1.1.06263 64 - uses: actions/checkout@v3.1.065 with:66 ref: ${{ github.head_ref }} 6768 69 - name: Prepare SHA70 uses: ./.github/actions/prepare7172 - name: Read .env file73 uses: xom9ikk/dotenv@v27475 - name: Log in to Docker Hub76 uses: docker/login-action@v2.1.077 with:78 username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}79 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8081 - name: Generate ENV related extend Dockerfile file for POLKADOT82 uses: cuchi/jinja2-action@v1.2.083 with:84 template: .docker/Dockerfile-polkadot.j285 output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml86 variables: |87 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}88 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}89 90 - name: Prepare polkadot91 uses: ./.github/actions/buildContainer92 id: polkadot93 with:94 container: uniquenetwork/builder-polkadot95 tag: ${{ matrix.relay_branch }}96 context: .docker97 dockerfile: Dockerfile-polkadot.${{ matrix.relay_branch }}.yml98 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}99 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}100101 - name: Prepare mainnet102 uses: ./.github/actions/buildContainer103 id: mainnet104 with:105 container: uniquenetwork/ci-nodata-${{ matrix.network }}106 tag: ${{ matrix.mainnet_branch }}107 context: .docker108 dockerfile: Dockerfile-unique-release109 args: |110 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}111 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}112 --build-arg UNIQUE_VERSION=${{ matrix.mainnet_branch }}113 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}114 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}115116 - name: Prepare latest117 uses: ./.github/actions/buildContainer118 id: latest119 with:120 container: uniquenetwork/ci-nodata-${{ matrix.network }}121 tag: ${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}122 context: .123 dockerfile: .docker/Dockerfile-unique124 args: |125 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}126 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}127 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}128 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}129130 - name: Extract wasms131 uses: ./.github/actions/extractDocker132 id: wasms133 with:134 image: ${{ steps.latest.outputs.name }}135 directory: /wasm136137 - uses: actions/setup-node@v3.5.1138 with:139 node-version: 20140141 - name: Install baedeker142 uses: UniqueNetwork/baedeker-action/setup@built143144 - name: Setup library145 run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library146147 - name: Start network148 uses: UniqueNetwork/baedeker-action@built149 id: bdk150 with:151 jpath: |152 .baedeker/vendor153 tla-str: |154 relay_spec=rococo-local155 inputs: |156 .baedeker/node-only.jsonnet157 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'${{ steps.polkadot.outputs.name }}'}})158 # nodata build uses old runtime, but new chain, thus we use mainnet image for spec generation, and then latest image for nodes.159 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, for_chain = false)160 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})161162 - name: "Reconcile: runtime is upgraded"163 working-directory: js-packages/tests164 run: |165 yarn166 ../scripts/wait_for_first_block.sh167 echo "Executing upgrade"168 yarn node --no-warnings=ExperimentalWarning --loader ts-node/esm util/authorizeEnactUpgrade.ts ${{ steps.wasms.outputs.dir }}/${{ matrix.wasm_name }}-runtime/${{ matrix.wasm_name }}_runtime.compact.compressed.wasm169 env:170 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}171172 - name: Run Parallel tests after forkless upgrade173 working-directory: js-packages/tests174 run: |175 yarn add mochawesome176 ../scripts/wait_for_first_block.sh177 echo "Ready to start tests"178 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}179 env:180 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}181182 - name: Run Sequential tests after forkless upgrade183 if: success() || failure()184 working-directory: js-packages/tests185 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}186 env:187 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}188189 - name: Remove builder cache190 if: always() 191 run: |192 docker system prune -f