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

difftreelog

source

.github/workflows/xcm.yml21.3 KiBsourcehistory
1name: xcm-testnet23# 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:16  prepare-execution-marix:17    name: Prepare execution matrix1819    runs-on: [self-hosted-ci]20    outputs:21      matrix: ${{ steps.create_matrix.outputs.matrix }}2223    steps:24      - 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}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.WESTMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, hydradx_version {${{ env.HYDRADX_BUILD_BRANCH }}}, runtest {testXcmOpal}, runtime_features {opal-runtime}41            network {quartz}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, astar_version {${{ env.SHIDEN_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, hydradx_version {${{ env.HYDRADX_BUILD_BRANCH }}}, runtest {testFullXcmQuartz}, runtime_features {quartz-runtime}42            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 }}}, hydradx_version {${{ env.HYDRADX_BUILD_BRANCH }}}, runtest {testFullXcmUnique}, runtime_features {unique-runtime}4344  xcm:45    needs: prepare-execution-marix46    # The type of runner that the job will run on47    runs-on: [XL]4849    timeout-minutes: 6005051    name: ${{ matrix.network }}5253    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.5455    strategy:56      matrix:57        include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}5859    steps:60      - name: Skip if pull request is in Draft61        if: github.event.pull_request.draft == true62        run: exit 16364      - name: Clean Workspace65        uses: AutoModality/action-clean@v1.1.06667      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it68      - uses: actions/checkout@v3.1.069        with:70          ref: ${{ github.head_ref }} #Checking out head commit7172      # Prepare SHA73      - name: Prepare SHA74        uses: ./.github/actions/prepare7576      - name: Read .env file77        uses: xom9ikk/dotenv@v27879      - name: Log in to Docker Hub80        uses: docker/login-action@v2.1.081        with:82          username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}83          password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8485      # Check POLKADOT version and build it if it doesn't exist in repository86      - name: Generate ENV related extend Dockerfile file for POLKADOT87        uses: cuchi/jinja2-action@v1.2.088        with:89          template: .docker/Dockerfile-polkadot.j290          output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml91          variables: |92            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}93            POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}9495      - name: Check if the dockerhub repository contains the needed version POLKADOT96        run: |97          # aquire token98            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)99            export TOKEN=$TOKEN100101          # Get TAGS from DOCKERHUB POLKADOT repository102            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"]')103          # Show TAGS104            echo "POLKADOT TAGS:"105            echo $POLKADOT_TAGS106          # Check correct version POLKADOT and build it if it doesn't exist in POLKADOT TAGS107            if [[ ${POLKADOT_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.relay_branch }}"($|[[:space:]]) ]]; then108                echo "Repository has needed POLKADOT version";109                docker pull uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}110            else111                echo "Repository has not needed POLKADOT version, so build it";112                cd .docker/ && docker build --file ./Dockerfile-polkadot.${{ matrix.relay_branch }}.yml --tag uniquenetwork/builder-polkadot:${{ matrix.relay_branch }} .113                echo "Push needed POLKADOT version to the repository";114                docker push uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}115            fi116        shell: bash117118      # Check ACALA version and build it if it doesn't exist in repository119      - name: Generate ENV related extend Dockerfile file for ACALA120        uses: cuchi/jinja2-action@v1.2.0121        with:122          template: .docker/Dockerfile-acala.j2123          output_file: .docker/Dockerfile-acala.${{ matrix.acala_version }}.yml124          variables: |125            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}126            ACALA_BUILD_BRANCH=${{ matrix.acala_version }}127128      - name: Check if the dockerhub repository contains the needed ACALA version129        run: |130          # aquire token131            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)132            export TOKEN=$TOKEN133134          # Get TAGS from DOCKERHUB repository135            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"]')136          # Show TAGS137            echo "ACALA TAGS:"138            echo $ACALA_TAGS139          # Check correct version ACALA and build it if it doesn't exist in ACALA TAGS140            if [[ ${ACALA_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.acala_version }}"($|[[:space:]]) ]]; then141                echo "Repository has needed ACALA version";142                docker pull uniquenetwork/builder-acala:${{ matrix.acala_version }}143            else144                echo "Repository has not needed ACALA version, so build it";145                cd .docker/ && docker build --file ./Dockerfile-acala.${{ matrix.acala_version }}.yml --tag uniquenetwork/builder-acala:${{ matrix.acala_version }} .146                echo "Push needed ACALA version to the repository";147                docker push uniquenetwork/builder-acala:${{ matrix.acala_version }}148            fi149        shell: bash150151      # Check MOONBEAM version and build it if it doesn't exist in repository152      - name: Generate ENV related extend Dockerfile file for MOONBEAM153        uses: cuchi/jinja2-action@v1.2.0154        with:155          template: .docker/Dockerfile-moonbeam.j2156          output_file: .docker/Dockerfile-moonbeam.${{ matrix.moonbeam_version }}.yml157          variables: |158            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}159            MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }}160161      - name: Check if the dockerhub repository contains the needed MOONBEAM version162        run: |163          # aquire token164            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)165            export TOKEN=$TOKEN166167          # Get TAGS from DOCKERHUB repository168            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"]')169          # Show TAGS170            echo "MOONBEAM TAGS:"171            echo $MOONBEAM_TAGS172          # Check correct version MOONBEAM and build it if it doesn't exist in MOONBEAM TAGS173            if [[ ${MOONBEAM_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.moonbeam_version }}"($|[[:space:]]) ]]; then174                echo "Repository has needed MOONBEAM version";175                docker pull uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}176            else177                echo "Repository has not needed MOONBEAM version, so build it";178                cd .docker/ && docker build --file ./Dockerfile-moonbeam.${{ matrix.moonbeam_version }}.yml --tag uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }} .179                echo "Push needed MOONBEAM version to the repository";180                docker push uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}181            fi182        shell: bash183184      # Check CUMULUS version and build it if it doesn't exist in repository185      - name: Generate ENV related extend Dockerfile file for CUMULUS186        uses: cuchi/jinja2-action@v1.2.0187        with:188          template: .docker/Dockerfile-cumulus.j2189          output_file: .docker/Dockerfile-cumulus.${{ matrix.cumulus_version }}.yml190          variables: |191            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}192            CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }}193194      - name: Check if the dockerhub repository contains the needed CUMULUS version195        run: |196          # aquire token197            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)198            export TOKEN=$TOKEN199200          # Get TAGS from DOCKERHUB repository201            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"]')202          # Show TAGS203            echo "CUMULUS TAGS:"204            echo $CUMULUS_TAGS205          # Check correct version CUMULUS and build it if it doesn't exist in CUMULUS TAGS206            if [[ ${CUMULUS_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.cumulus_version }}"($|[[:space:]]) ]]; then207                echo "Repository has needed CUMULUS version";208                docker pull uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}209            else210                echo "Repository has not needed CUMULUS version, so build it";211                cd .docker/ && docker build --file ./Dockerfile-cumulus.${{ matrix.cumulus_version }}.yml --tag uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }} .212                echo "Push needed CUMULUS version to the repository";213                docker push uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}214            fi215        shell: bash216217      # Check ASTAR version and build it if it doesn't exist in repository218      - name: Generate ENV related extend Dockerfile file for ASTAR219        uses: cuchi/jinja2-action@v1.2.0220        with:221          template: .docker/Dockerfile-astar.j2222          output_file: .docker/Dockerfile-astar.${{ matrix.astar_version }}.yml223          variables: |224            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}225            ASTAR_BUILD_BRANCH=${{ matrix.astar_version }}226227      - name: Check if the dockerhub repository contains the needed ASTAR version228        run: |229          # aquire token230            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)231            export TOKEN=$TOKEN232233          # Get TAGS from DOCKERHUB repository234            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"]')235          # Show TAGS236            echo "ASTAR TAGS:"237            echo $ASTAR_TAGS238          # Check correct version ASTAR and build it if it doesn't exist in ASTAR TAGS239            if [[ ${ASTAR_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.astar_version }}"($|[[:space:]]) ]]; then240                echo "Repository has needed ASTAR version";241                docker pull uniquenetwork/builder-astar:${{ matrix.astar_version }}242            else243                echo "Repository has not needed ASTAR version, so build it";244                cd .docker/ && docker build --file ./Dockerfile-astar.${{ matrix.astar_version }}.yml --tag uniquenetwork/builder-astar:${{ matrix.astar_version }} .245                echo "Push needed ASTAR version to the repository";246                docker push uniquenetwork/builder-astar:${{ matrix.astar_version }}247            fi248        shell: bash249250      # Check POLKADEX version and build it if it doesn't exist in repository251      - name: Generate ENV related extend Dockerfile file for POLKADEX252        uses: cuchi/jinja2-action@v1.2.0253        with:254          template: .docker/Dockerfile-polkadex.j2255          output_file: .docker/Dockerfile-polkadex.${{ matrix.polkadex_version }}.yml256          variables: |257            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}258            POLKADEX_BUILD_BRANCH=${{ matrix.polkadex_version }}259260      - name: Check if the dockerhub repository contains the needed POLKADEX version261        run: |262          # aquire token263            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)264            export TOKEN=$TOKEN265266          # Get TAGS from DOCKERHUB repository267            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"]')268          # Show TAGS269            echo "POLKADEX TAGS:"270            echo $POLKADEX_TAGS271          # Check correct version POLKADEX and build it if it doesn't exist in POLKADEX TAGS272            if [[ ${POLKADEX_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.polkadex_version }}"($|[[:space:]]) ]]; then273                echo "Repository has needed POLKADEX version";274                docker pull uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}275            else276                echo "Repository has not needed POLKADEX version, so build it";277                cd .docker/ && docker build --file ./Dockerfile-polkadex.${{ matrix.polkadex_version }}.yml --tag uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }} .278                echo "Push needed POLKADEX version to the repository";279                docker push uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}280            fi281        shell: bash282283      # Check Hydradx version and build it if it doesn't exist in repository284      - name: Generate ENV related extend Dockerfile file for Hydradx285        uses: cuchi/jinja2-action@v1.2.0286        with:287          template: .docker/Dockerfile-hydradx.j2288          output_file: .docker/Dockerfile-hydradx.${{ matrix.hydradx_version }}.yml289          variables: |290            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}291            HYDRADX_BUILD_BRANCH=${{ matrix.hydradx_version }}292293      - name: Check if the dockerhub repository contains the needed HYDRADX version294        run: |295          # aquire token296            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)297            export TOKEN=$TOKEN298299          # Get TAGS from DOCKERHUB repository300            HYDRADX_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-hydradx/tags/?page_size=100 | jq -r '."results"[]["name"]')301          # Show TAGS302            echo "HYDRADX TAGS:"303            echo $HYDRADX_TAGS304          # Check correct version HYDRADX and build it if it doesn't exist in HYDRADX TAGS305            if [[ ${HYDRADX_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.hydradx_version }}"($|[[:space:]]) ]]; then306                echo "Repository has needed HYDRADX version";307                docker pull uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }}308            else309                echo "Repository has not needed HYDRADX version, so build it";310                cd .docker/ && docker build --file ./Dockerfile-hydradx.${{ matrix.hydradx_version }}.yml --tag uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }} .311                echo "Push needed HYDRADX version to the repository";312                docker push uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }}313            fi314        shell: bash315316317      - name: Build unique-chain318        run: |319          docker build --file .docker/Dockerfile-unique \320            --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }} \321            --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} \322            --tag uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }} \323            .324325      - name: Push docker image version326        run: docker push uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}327328      - uses: actions/setup-node@v3.5.1329        with:330          node-version: 20331332      - name: Install baedeker333        uses: UniqueNetwork/baedeker-action/setup@built334335      - name: Setup library336        run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library337338      - name: Start network339        uses: UniqueNetwork/baedeker-action@built340        id: bdk341        with:342          jpath: |343            .baedeker/vendor344          tla-str: |345            relay_spec=${{ env.RELAY_CHAIN_TYPE }}-local346          inputs: |347            .baedeker/xcm-${{ matrix.network }}.jsonnet348            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}'}})349            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}'}})350            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/acala':{dockerImage:'uniquenetwork/builder-acala:${{ matrix.acala_version }}'}})351            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/moonbeam':{dockerImage:'uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}'}})352            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/cumulus':{dockerImage:'uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}'}})353            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/astar':{dockerImage:'uniquenetwork/builder-astar:${{ matrix.astar_version }}'}})354            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadex':{dockerImage:'uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}'}})355            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/hydradx':{dockerImage:'uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }}'}})356357      - name: Upload network config358        uses: actions/upload-artifact@v3359        with:360          name: ${{ matrix.network }}-network-config361          path: ${{ steps.bdk.outputs.composeProject }}362          retention-days: 2363364      - name: Yarn install365        working-directory: js-packages/tests366        run: |367          yarn install368          yarn add mochawesome369370      - name: Call HRMP initialization371        working-directory: js-packages/tests372        run: |373          yarn node --no-warnings=ExperimentalWarning --loader ts-node/esm util/createHrmp.ts ${{matrix.network}}374375      - name: Run XCM tests376        working-directory: js-packages/tests377        run: |378          # Wanted by both wait_for_first_block379          export RPC_URL="${RELAY_OPAL_HTTP_URL:-${RELAY_QUARTZ_HTTP_URL:-${RELAY_UNIQUE_HTTP_URL:-}}}"380          ../scripts/wait_for_first_block.sh381          echo "Ready to start tests"382          NOW=$(date +%s) && yarn ${{ matrix.runtest }} --reporter mochawesome --reporter-options reportFilename=test-${NOW}383384      - name: XCM Test Report385        uses: phoenix-actions/test-reporting@v10386        id: test-report387        if: success() || failure()388        with:389          name: XCM Tests ${{ matrix.network }}390          path: js-packages/tests/mochawesome-report/test-*.json391          reporter: mochawesome-json392          fail-on-error: 'false'393394      - name: Clean Workspace395        if: always()396        uses: AutoModality/action-clean@v1.1.0397398      - name: Remove builder cache399        if: always()400        run: |401          docker system prune -a -f