git.delta.rocks / unique-network / refs/commits / 24a0f65a32fc

difftreelog

source

.github/workflows/xcm.yml18.2 KiBsourcehistory
1name: xcm-testnet-build23# Controls when the action will run.4on:5  workflow_call:67  # Allows you to run this workflow manually from the Actions tab8  workflow_dispatch:910#Define Workflow variables11env:12  REPO_URL: ${{ github.server_url }}/${{ github.repository }}1314# A workflow run is made up of one or more jobs that can run sequentially or in parallel15jobs:1617  prepare-execution-marix:1819    name: Prepare execution matrix2021    runs-on: [self-hosted-ci]22    outputs:23      matrix: ${{ steps.create_matrix.outputs.matrix }}2425    steps:2627      - name: Clean Workspace28        uses: AutoModality/action-clean@v1.1.02930      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it31      - uses: actions/checkout@v3.1.032        with:33          ref: ${{ github.head_ref }}  #Checking out head commit3435      - name: Read .env file36        uses: xom9ikk/dotenv@v23738      - name: Create Execution matrix39        uses: CertainLach/create-matrix-action@v440        id: create_matrix41        with:42          matrix: |43            network {unique}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, runtest {testXcmUnique}, runtime_features {unique-runtime}4445  xcm-build:4647    needs: prepare-execution-marix48    # The type of runner that the job will run on49    runs-on: [XL]5051    timeout-minutes: 6005253    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-marix.outputs.matrix)}}6061    steps:62      - name: Skip if pull request is in Draft63        if: github.event.pull_request.draft == true64        run: exit 16566      - name: Clean Workspace67        uses: AutoModality/action-clean@v1.1.06869      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it70      - uses: actions/checkout@v3.1.071        with:72          ref: ${{ github.head_ref }}  #Checking out head commit7374      # Prepare SHA75      - name: Prepare SHA76        uses: ./.github/actions/prepare7778      - name: Read .env file79        uses: xom9ikk/dotenv@v28081      - name: Log in to Docker Hub82        uses: docker/login-action@v2.1.083        with:84          username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}85          password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8687      # Check POLKADOT version and build it if it doesn't exist in repository88      - 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 }}9697      - name: Check if the dockerhub repository contains the needed version POLKADOT98        run: |99          # aquire token100            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)101            export TOKEN=$TOKEN102103          # Get TAGS from DOCKERHUB POLKADOT repository104            POLKADOT_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-polkadot/tags/?page_size=100 | jq -r '."results"[]["name"]')105          # Show TAGS106            echo "POLKADOT TAGS:"107            echo $POLKADOT_TAGS108          # Check correct version POLKADOT and build it if it doesn't exist in POLKADOT TAGS109            if [[ ${POLKADOT_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.relay_branch }}"($|[[:space:]]) ]]; then110                echo "Repository has needed POLKADOT version";111                docker pull uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}112            else113                echo "Repository has not needed POLKADOT version, so build it";114                cd .docker/ && docker build --file ./Dockerfile-polkadot.${{ matrix.relay_branch }}.yml --tag uniquenetwork/builder-polkadot:${{ matrix.relay_branch }} .115                echo "Push needed POLKADOT version to the repository";116                docker push uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}117            fi118        shell: bash119120      # Check ACALA version and build it if it doesn't exist in repository121      - name: Generate ENV related extend Dockerfile file for ACALA122        uses: cuchi/jinja2-action@v1.2.0123        with:124          template: .docker/Dockerfile-acala.j2125          output_file: .docker/Dockerfile-acala.${{ matrix.acala_version }}.yml126          variables: |127            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}128            ACALA_BUILD_BRANCH=${{ matrix.acala_version }}129130      - name: Check if the dockerhub repository contains the needed ACALA version131        run: |132          # aquire token133            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)134            export TOKEN=$TOKEN135136          # Get TAGS from DOCKERHUB repository137            ACALA_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-acala/tags/?page_size=100 | jq -r '."results"[]["name"]')138          # Show TAGS139            echo "ACALA TAGS:"140            echo $ACALA_TAGS141          # Check correct version ACALA and build it if it doesn't exist in ACALA TAGS142            if [[ ${ACALA_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.acala_version }}"($|[[:space:]]) ]]; then143                echo "Repository has needed ACALA version";144                docker pull uniquenetwork/builder-acala:${{ matrix.acala_version }}145            else146                echo "Repository has not needed ACALA version, so build it";147                cd .docker/ && docker build --file ./Dockerfile-acala.${{ matrix.acala_version }}.yml --tag uniquenetwork/builder-acala:${{ matrix.acala_version }} .148                echo "Push needed ACALA version to the repository";149                docker push uniquenetwork/builder-acala:${{ matrix.acala_version }}150            fi151        shell: bash152153      # Check MOONBEAM version and build it if it doesn't exist in repository154      - name: Generate ENV related extend Dockerfile file for MOONBEAM155        uses: cuchi/jinja2-action@v1.2.0156        with:157          template: .docker/Dockerfile-moonbeam.j2158          output_file: .docker/Dockerfile-moonbeam.${{ matrix.moonbeam_version }}.yml159          variables: |160            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}161            MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }}162163      - name: Check if the dockerhub repository contains the needed MOONBEAM version164        run: |165          # aquire token166            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)167            export TOKEN=$TOKEN168169          # Get TAGS from DOCKERHUB repository170            MOONBEAM_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-moonbeam/tags/?page_size=100 | jq -r '."results"[]["name"]')171          # Show TAGS172            echo "MOONBEAM TAGS:"173            echo $MOONBEAM_TAGS174          # Check correct version MOONBEAM and build it if it doesn't exist in MOONBEAM TAGS175            if [[ ${MOONBEAM_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.moonbeam_version }}"($|[[:space:]]) ]]; then176                echo "Repository has needed MOONBEAM version";177                docker pull uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}178            else179                echo "Repository has not needed MOONBEAM version, so build it";180                cd .docker/ && docker build --file ./Dockerfile-moonbeam.${{ matrix.moonbeam_version }}.yml --tag uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }} .181                echo "Push needed MOONBEAM version to the repository";182                docker push uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}183            fi184        shell: bash185186      # Check CUMULUS version and build it if it doesn't exist in repository187      - name: Generate ENV related extend Dockerfile file for CUMULUS188        uses: cuchi/jinja2-action@v1.2.0189        with:190          template: .docker/Dockerfile-cumulus.j2191          output_file: .docker/Dockerfile-cumulus.${{ matrix.cumulus_version }}.yml192          variables: |193            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}194            CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }}195196      - name: Check if the dockerhub repository contains the needed CUMULUS version197        run: |198          # aquire token199            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)200            export TOKEN=$TOKEN201202          # Get TAGS from DOCKERHUB repository203            CUMULUS_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-cumulus/tags/?page_size=100 | jq -r '."results"[]["name"]')204          # Show TAGS205            echo "CUMULUS TAGS:"206            echo $CUMULUS_TAGS207          # Check correct version CUMULUS and build it if it doesn't exist in CUMULUS TAGS208            if [[ ${CUMULUS_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.cumulus_version }}"($|[[:space:]]) ]]; then209                echo "Repository has needed CUMULUS version";210                docker pull uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}211            else212                echo "Repository has not needed CUMULUS version, so build it";213                cd .docker/ && docker build --file ./Dockerfile-cumulus.${{ matrix.cumulus_version }}.yml --tag uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }} .214                echo "Push needed CUMULUS version to the repository";215                docker push uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}216            fi217        shell: bash218219      # Check ASTAR version and build it if it doesn't exist in repository220      - name: Generate ENV related extend Dockerfile file for ASTAR221        uses: cuchi/jinja2-action@v1.2.0222        with:223          template: .docker/Dockerfile-astar.j2224          output_file: .docker/Dockerfile-astar.${{ matrix.astar_version }}.yml225          variables: |226            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}227            ASTAR_BUILD_BRANCH=${{ matrix.astar_version }}228229      - name: Check if the dockerhub repository contains the needed ASTAR version230        run: |231          # aquire token232            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)233            export TOKEN=$TOKEN234235          # Get TAGS from DOCKERHUB repository236            ASTAR_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-astar/tags/?page_size=100 | jq -r '."results"[]["name"]')237          # Show TAGS238            echo "ASTAR TAGS:"239            echo $ASTAR_TAGS240          # Check correct version ASTAR and build it if it doesn't exist in ASTAR TAGS241            if [[ ${ASTAR_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.astar_version }}"($|[[:space:]]) ]]; then242                echo "Repository has needed ASTAR version";243                docker pull uniquenetwork/builder-astar:${{ matrix.astar_version }}244            else245                echo "Repository has not needed ASTAR version, so build it";246                cd .docker/ && docker build --file ./Dockerfile-astar.${{ matrix.astar_version }}.yml --tag uniquenetwork/builder-astar:${{ matrix.astar_version }} .247                echo "Push needed ASTAR version to the repository";248                docker push uniquenetwork/builder-astar:${{ matrix.astar_version }}249            fi250        shell: bash251252      # Check POLKADEX version and build it if it doesn't exist in repository253      - name: Generate ENV related extend Dockerfile file for POLKADEX254        uses: cuchi/jinja2-action@v1.2.0255        with:256          template: .docker/Dockerfile-polkadex.j2257          output_file: .docker/Dockerfile-polkadex.${{ matrix.polkadex_version }}.yml258          variables: |259            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}260            POLKADEX_BUILD_BRANCH=${{ matrix.polkadex_version }}261262      - name: Check if the dockerhub repository contains the needed POLKADEX version263        run: |264          # aquire token265            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)266            export TOKEN=$TOKEN267268          # Get TAGS from DOCKERHUB repository269            POLKADEX_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-polkadex/tags/?page_size=100 | jq -r '."results"[]["name"]')270          # Show TAGS271            echo "POLKADEX TAGS:"272            echo $POLKADEX_TAGS273          # Check correct version POLKADEX and build it if it doesn't exist in POLKADEX TAGS274            if [[ ${POLKADEX_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.polkadex_version }}"($|[[:space:]]) ]]; then275                echo "Repository has needed POLKADEX version";276                docker pull uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}277            else278                echo "Repository has not needed POLKADEX version, so build it";279                cd .docker/ && docker build --file ./Dockerfile-polkadex.${{ matrix.polkadex_version }}.yml --tag uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }} .280                echo "Push needed POLKADEX version to the repository";281                docker push uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}282            fi283        shell: bash284285286      - name: Run find-and-replace to remove slashes from branch name287        uses: mad9000/actions-find-and-replace-string@4288        id: branchname289        with:290          source: ${{ github.head_ref }}291          find: '/'292          replace: '-'293294      - name: Build unique-chain295        run: |296          docker build --file .docker/Dockerfile-unique \297            --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }} \298            --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} \299            --tag uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }} \300            .301302      - name: Push docker image version303        run: docker push uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }}304305      - uses: actions/setup-node@v3.5.1306        with:307          node-version: 16308309      - name: Install baedeker310        uses: UniqueNetwork/baedeker-action/setup@built311312      - name: Setup library313        run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library314315      - name: Start network316        uses: UniqueNetwork/baedeker-action@built317        id: bdk318        with:319          jpath: |320            .baedeker/vendor321          inputs: |322            .baedeker/xcm-${{ matrix.network }}.jsonnet323            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}'}})324            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }}'}})325            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/acala':{dockerImage:'uniquenetwork/builder-acala:${{ matrix.acala_version }}'}})326            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/moonbeam':{dockerImage:'uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}'}})327            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/cumulus':{dockerImage:'uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}'}})328            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/astar':{dockerImage:'uniquenetwork/builder-astar:${{ matrix.astar_version }}'}})329            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadex':{dockerImage:'uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}'}})330331      - name: Upload network config332        uses: actions/upload-artifact@v3333        with:334          name: ${{ matrix.network }}-network-config335          path: ${{ steps.bdk.outputs.composeProject }}336          retention-days: 2337338      - name: Run XCM tests339        working-directory: tests340        run: |341          yarn install342          yarn add mochawesome343          # Wanted by both wait_for_first_block344          export RPC_URL="${RELAY_OPAL_HTTP_URL:-${RELAY_QUARTZ_HTTP_URL:-${RELAY_UNIQUE_HTTP_URL:-}}}"345          ./scripts/wait_for_first_block.sh346          echo "Ready to start tests"347          NOW=$(date +%s) && yarn ${{ matrix.runtest }} --reporter mochawesome --reporter-options reportFilename=test-${NOW}348349      - name: XCM Test Report350        uses: phoenix-actions/test-reporting@v10351        id: test-report352        if: success() || failure()353        with:354          name: XCM Tests ${{ matrix.network }}355          path: tests/mochawesome-report/test-*.json356          reporter: mochawesome-json357          fail-on-error: 'false'358359      - name: Clean Workspace360        if: always()361        uses: AutoModality/action-clean@v1.1.0362363      - name: Remove builder cache364        if: always()365        run: |366          docker system prune -a -f