git.delta.rocks / unique-network / refs/commits / c70fd784684b

difftreelog

source

.github/workflows/node-only-update.yml10.0 KiBsourcehistory
1# 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: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 }}5455    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: 18147148      - 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          # 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 mainnet193          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          # 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 mainnet211          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()    # run this step even if previous step failed218        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()                   # run this step always237        run: |238          docker system prune -f