--- a/.docker/Dockerfile-parachain-upgrade-data +++ b/.docker/Dockerfile-parachain-upgrade-data @@ -38,8 +38,6 @@ ARG PROFILE=release ARG NETWORK -ARG BRANCH -ARG REPO_URL COPY . /unique_parachain WORKDIR /unique_parachain --- /dev/null +++ b/.docker/Dockerfile-parachain-upgrade-data.j2 @@ -0,0 +1,78 @@ +ARG POLKADOT_BUILD_BRANCH +FROM uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} as polkadot + +# ===== Rust builder ===== +FROM uniquenetwork/services:latest as rust-builder + +ENV CARGO_HOME="/cargo-home" +ENV PATH="/cargo-home/bin:$PATH" +ENV TZ=UTC + +RUN rustup toolchain uninstall $(rustup toolchain list) && \ + rustup toolchain install {{ RUST_TOOLCHAIN }} && \ + rustup default {{ RUST_TOOLCHAIN }} && \ + rustup target list --installed && \ + rustup show +RUN rustup target add wasm32-unknown-unknown --toolchain {{ RUST_TOOLCHAIN }} + +RUN mkdir /unique_parachain +WORKDIR /unique_parachain + +# ===== BUILD current version ====== +FROM rust-builder as builder-unique-current + +ARG PROFILE=release + +WORKDIR /unique_parachain + +RUN git clone https://github.com/UniqueNetwork/unique-chain.git -b {{ MAINNET_BRANCH }} . && \ + cargo build --features={{ NETWORK }}-runtime --$PROFILE + +# ===== BUILD target version ====== +FROM rust-builder as builder-unique-target + +ARG PROFILE=release + +COPY . /unique_parachain +WORKDIR /unique_parachain + +RUN cargo build --features={{ NETWORK }}-runtime --$PROFILE + +# ===== RUN ====== +FROM ubuntu:20.04 + +ENV REPLICA_FROM={{ REPLICA_FROM }} + +RUN apt-get -y update && \ + apt-get -y install curl git && \ + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \ + export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + nvm install v16.16.0 && \ + nvm use v16.16.0 + +RUN git clone https://github.com/uniquenetwork/polkadot-launch.git -b {{ POLKADOT_LAUNCH_BRANCH }} + +RUN export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + cd /polkadot-launch && \ + npm install --global yarn && \ + yarn install + +COPY --from=builder-unique-current /unique_parachain/target/release/unique-collator /unique-chain/current/release/ +COPY --from=builder-unique-target /unique_parachain/target/release/unique-collator /unique-chain/target/release/ +COPY --from=builder-unique-target /unique_parachain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm /unique-chain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm + +COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/launch-config-forkless-data.json /polkadot-launch/launch-config.json +COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/fork.jsonnet /polkadot-launch/fork.jsonnet +COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/typeNames.jsonnet /polkadot-launch/typeNames.jsonnet + +COPY --from=uniquenetwork/builder-chainql:latest /chainql/target/release/chainql /chainql/target/release/ + +COPY --from=polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/ +COPY --from=polkadot /unique_parachain/polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm /polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm + +CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" REPLICA_FROM && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + cd /polkadot-launch && \ + yarn start launch-config.json --test-upgrade-parachains --- /dev/null +++ b/.docker/Dockerfile-parachain-upgrade.j2 @@ -0,0 +1,72 @@ +ARG POLKADOT_BUILD_BRANCH +FROM uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} as polkadot + +# ===== Rust builder ===== +FROM uniquenetwork/services:latest as rust-builder + +ENV CARGO_HOME="/cargo-home" +ENV PATH="/cargo-home/bin:$PATH" +ENV TZ=UTC + +RUN rustup toolchain uninstall $(rustup toolchain list) && \ + rustup toolchain install {{ RUST_TOOLCHAIN }} && \ + rustup default {{ RUST_TOOLCHAIN }} && \ + rustup target list --installed && \ + rustup show +RUN rustup target add wasm32-unknown-unknown --toolchain {{ RUST_TOOLCHAIN }} + +RUN mkdir /unique_parachain +WORKDIR /unique_parachain + +# ===== BUILD current version ====== +FROM rust-builder as builder-unique-current + +ARG PROFILE=release + +WORKDIR /unique_parachain + +RUN git clone https://github.com/UniqueNetwork/unique-chain.git -b {{ MAINNET_BRANCH }} . && \ + cargo build --features={{ NETWORK }}-runtime --$PROFILE + +# ===== BUILD target version ====== +FROM rust-builder as builder-unique-target + +ARG PROFILE=release + +COPY . /unique_parachain +WORKDIR /unique_parachain + +RUN cargo build --features={{ NETWORK }}-runtime --$PROFILE + +# ===== RUN ====== +FROM ubuntu:20.04 + +RUN apt-get -y update && \ + apt-get -y install curl git && \ + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \ + export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + nvm install v16.16.0 && \ + nvm use v16.16.0 + +RUN git clone https://github.com/uniquenetwork/polkadot-launch -b {{ POLKADOT_LAUNCH_BRANCH }} + +RUN export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + cd /polkadot-launch && \ + npm install --global yarn && \ + yarn install + +COPY --from=builder-unique-current /unique_parachain/target/release/unique-collator /unique-chain/current/release/ +COPY --from=builder-unique-target /unique_parachain/target/release/unique-collator /unique-chain/target/release/ +COPY --from=builder-unique-target /unique_parachain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm /unique-chain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm + +COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/launch-config-forkless-nodata.json /polkadot-launch/launch-config.json + +COPY --from=polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/ +COPY --from=polkadot /unique_parachain/polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm /polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm + +CMD export NVM_DIR="$HOME/.nvm" && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + cd /polkadot-launch && \ + yarn start launch-config.json --test-upgrade-parachains --- a/.docker/Dockerfile-try-runtime.j2 +++ b/.docker/Dockerfile-try-runtime.j2 @@ -1,18 +1,10 @@ # ===== Rust builder ===== -FROM ubuntu:20.04 as rust-builder -LABEL maintainer="Unique.Network" +FROM uniquenetwork/services:latest as rust-builder +ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN ENV CARGO_HOME="/cargo-home" ENV PATH="/cargo-home/bin:$PATH" ENV TZ=UTC -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN apt-get update && \ - apt-get install -y curl cmake pkg-config libssl-dev git clang protobuf-compiler && \ - apt-get clean && \ - rm -r /var/lib/apt/lists/* - -RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none RUN rustup toolchain uninstall $(rustup toolchain list) && \ rustup toolchain install {{ RUST_TOOLCHAIN }} && \ --- /dev/null +++ b/.docker/docker-compose.forkless-data.j2 @@ -0,0 +1,13 @@ +version: "3.5" + +services: + forkless-data: + image: uniquenetwork/ci-forkless-data-local:{{ NETWORK }}-{{ BUILD_TAG }} + container_name: forkless-data + image: forkless-data + expose: + - 9944 + - 9933 + ports: + - 127.0.0.1:9944:9944 + - 127.0.0.1:9933:9933 --- /dev/null +++ b/.docker/docker-compose.forkless-nodata.j2 @@ -0,0 +1,13 @@ +version: "3.5" + +services: + forkless-nodata: + image: uniquenetwork/ci-forkless-nodata-local:{{ NETWORK }}-{{ BUILD_TAG }} + container_name: forkless-nodata + image: forkless-nodata + expose: + - 9944 + - 9933 + ports: + - 127.0.0.1:9944:9944 + - 127.0.0.1:9933:9933 \ No newline at end of file --- a/.docker/docker-compose.tmp-try-runtime.j2 +++ /dev/null @@ -1,16 +0,0 @@ -version: "3.5" - -services: - try-runtime: - image: uniquenetwork/tryruntime-{{ NETWORK }}-testnet-local:latest - container_name: tryruntime-{{ NETWORK }}-testnet-local - expose: - - 9944 - - 9933 - ports: - - 127.0.0.1:9944:9944 - - 127.0.0.1:9933:9933 - logging: - options: - max-size: "1m" - max-file: "3" --- /dev/null +++ b/.docker/docker-compose.try-runtime.j2 @@ -0,0 +1,14 @@ +version: "3.5" + +services: + try-runtime: + image: uniquenetwork/ci-tryruntime-local:{{ NETWORK }}-{{ BUILD_TAG }} + container_name: try-runtime + image: try-runtime + expose: + - 9944 + - 9933 + ports: + - 127.0.0.1:9944:9944 + - 127.0.0.1:9933:9933 + --- a/.github/workflows/forkless-update-data.yml +++ b/.github/workflows/forkless-update-data.yml @@ -40,7 +40,7 @@ network {opal}, wasm_name {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}} network {sapphire}, wasm_name {quartz}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, replica_from_address {${{ env.SAPPHIRE_REPLICA_FROM }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}} - forkless-update-data: + forkless-update-data-build: needs: execution-marix # The type of runner that the job will run on runs-on: [self-hosted-ci,large] @@ -65,57 +65,157 @@ - name: Read .env file uses: xom9ikk/dotenv@v2 - - name: Generate ENV related extend file for docker-compose + # Prepare SHA + - name: Prepare SHA + uses: ./.github/actions/prepare + + # Build main image for FORKLESS-UPDATE-NODATA + - name: Generate ENV related extend Dockerfile file uses: cuchi/jinja2-action@v1.2.0 with: - template: .docker/docker-compose.tmp-forkless-data.j2 - output_file: .docker/docker-compose-forkless-data.${{ matrix.network }}.yml + template: .docker/Dockerfile-parachain-upgrade-data.j2 + output_file: .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml variables: | - REPO_URL=${{ github.server_url }}/${{ github.repository }}.git RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + NETWORK=${{ matrix.network }} + MAINNET_BRANCH=${{ matrix.mainnet_branch }} + WASM_NAME=${{ matrix.wasm_name }} POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }} POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }} - # POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} - # MAINNET_TAG=${{ matrix.mainnet_tag }} - MAINNET_BRANCH=${{ matrix.mainnet_branch }} - NETWORK=${{ matrix.network }} - # BRANCH=${{ github.head_ref }} REPLICA_FROM=${{ matrix.replica_from_address }} - WASM_NAME=${{ matrix.wasm_name }} - name: Show build configuration - run: cat .docker/docker-compose-forkless-data.${{ matrix.network }}.yml + run: cat .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml - name: Generate launch-config-forkless-data.json uses: cuchi/jinja2-action@v1.2.0 with: template: .docker/forkless-config/launch-config-forkless-data.j2 - output_file: .docker/launch-config-forkless-data.json + output_file: .docker/forkless-config/launch-config-forkless-data.json variables: | - NETWORK=${{ matrix.network }} - REPLICA_FROM=${{ matrix.replica_from_address }} - WASM_NAME=${{ matrix.wasm_name}} + WASM_NAME=${{ matrix.wasm_name }} RELAY_CHAIN_TYPE=${{ env.RELAY_CHAIN_TYPE }} + REPLICA_FROM=${{ matrix.replica_from_address }} - name: Show launch-config-forkless configuration - run: cat .docker/launch-config-forkless-data.json + run: cat .docker/forkless-config/launch-config-forkless-data.json + + - name: Run find-and-replace to remove slashes from branch name + uses: mad9000/actions-find-and-replace-string@3 + id: branchname + with: + source: ${{ github.head_ref }} + find: '/' + replace: '-' + + - name: Set build SHA + shell: bash + run: | + echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV + + - name: Build the stack + run: cd .docker/ && docker build --no-cache --file ./Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml --tag uniquenetwork/ci-forkless-data-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA . + + - name: Log in to Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.CORE_DOCKERHUB_USERNAME }} + password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} + + - name: Push docker image version + run: docker push uniquenetwork/ci-forkless-data-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f + docker system prune -f + + forkless-data-tests: + needs: [prepare-execution-marix, forkless-nodata-build] + # The type of runner that the job will run on + runs-on: [self-hosted-ci, large] + + timeout-minutes: 600 + + name: ${{ matrix.network }}-data-tests + + continue-on-error: false #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}} + + steps: + - name: Skip if pull request is in Draft + if: github.event.pull_request.draft == true + run: exit 1 + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3.1.0 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Prepare + uses: ./.github/actions/prepare + + - name: Set build SHA + shell: bash + run: | + echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV + + - name: Run find-and-replace to remove slashes from branch name + uses: mad9000/actions-find-and-replace-string@2 + id: branchname + with: + source: ${{ github.head_ref }} + find: '/' + replace: '-' + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.forkless-data.j2 + output_file: .docker/docker-compose.forkless-data.${{ matrix.network }}.yml + variables: | + NETWORK=${{ matrix.network }} + BUILD_TAG=${{ steps.branchname.outputs.value }}-$BUILD_SHA + + - name: Show build configuration + run: cat .docker/docker-compose.forkless-data.${{ matrix.network }}.yml + + - name: Log in to Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.CORE_DOCKERHUB_USERNAME }} + password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} - name: Build the stack - run: docker-compose -f ".docker/docker-compose-forkless-data.${{ matrix.network }}.yml" up -d --build --force-recreate --timeout 300 + run: docker-compose -f ".docker/docker-compose.forkless-data.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300 + - uses: actions/setup-node@v3.5.1 + with: + node-version: 16 + - name: Check if docker logs consist logs related to Runtime Upgrade testing. if: success() run: | counter=160 function check_container_status { - docker inspect -f {{.State.Running}} node-parachain + docker inspect -f {{.State.Running}} forkless-data } function do_docker_logs { - docker logs --details node-parachain 2>&1 + docker logs --details forkless-data 2>&1 } function is_started { if [ "$(check_container_status)" == "true" ]; then - echo "Container: node-parachain RUNNING"; + echo "Container: forkless-data RUNNING"; echo "Check Docker logs" DOCKER_LOGS=$(do_docker_logs) if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then @@ -129,7 +229,7 @@ return 1 fi else - echo "Container node-parachain not RUNNING" + echo "Container forkless-data not RUNNING" echo "Halting all future checks" exit 1 fi @@ -155,11 +255,11 @@ uses: jwalton/gh-docker-logs@v2.2.1 with: dest: './forkless-parachain-upgrade-data-logs.${{ matrix.features }}' - images: 'node-parachain' + images: 'forkless-data' - name: Show Docker logs if: success() || failure() - run: cat './forkless-parachain-upgrade-data-logs.${{ matrix.features }}/node-parachain.log' + run: cat './forkless-parachain-upgrade-data-logs.${{ matrix.features }}/forkless-data.log' - name: Stop running containers if: always() # run this step always --- a/.github/workflows/forkless-update-nodata.yml +++ b/.github/workflows/forkless-update-nodata.yml @@ -40,7 +40,7 @@ network {sapphire}, wasm_name {quartz}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}} - forkless-update-nodata: + forkless-nodata-build: needs: execution-marix # The type of runner that the job will run on runs-on: [self-hosted-ci,large] @@ -67,59 +67,156 @@ - name: Read .env file uses: xom9ikk/dotenv@v2 - - name: Generate ENV related extend file for docker-compose + # Prepare SHA + - name: Prepare SHA + uses: ./.github/actions/prepare + + - name: Log in to Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.CORE_DOCKERHUB_USERNAME }} + password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} + + # Build main image for FORKLESS-UPDATE-NODATA + - name: Generate ENV related extend Dockerfile file uses: cuchi/jinja2-action@v1.2.0 with: - template: .docker/docker-compose.tmp-forkless-nodata.j2 - output_file: .docker/docker-compose.${{ matrix.network }}.yml + template: .docker/Dockerfile-parachain-upgrade.j2 + output_file: .docker/Dockerfile-parachain-upgrade.${{ matrix.network }}.yml variables: | - REPO_URL=${{ github.server_url }}/${{ github.repository }}.git RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + NETWORK=${{ matrix.network }} + MAINNET_BRANCH=${{ matrix.mainnet_branch }} + WASM_NAME=${{ matrix.wasm_name }} POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }} POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }} - # POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }} - # MAINNET_TAG=${{ matrix.mainnet_tag }} - MAINNET_BRANCH=${{ matrix.mainnet_branch }} - NETWORK=${{ matrix.network }} - # BRANCH=${{ github.head_ref }} - WASM_NAME=${{ matrix.wasm_name }} - - name: Show build configuration - run: cat .docker/docker-compose.${{ matrix.network }}.yml + - name: Show build Dockerfile + run: cat .docker/Dockerfile-parachain-upgrade.${{ matrix.network }}.yml - name: Generate launch-config-forkless-nodata.json uses: cuchi/jinja2-action@v1.2.0 with: template: .docker/forkless-config/launch-config-forkless-nodata.j2 - output_file: .docker/launch-config-forkless-nodata.json + output_file: .docker/forkless-config/launch-config-forkless-nodata.json variables: | - NETWORK=${{ matrix.network }} WASM_NAME=${{ matrix.wasm_name }} RELAY_CHAIN_TYPE=${{ env.RELAY_CHAIN_TYPE }} - name: Show launch-config-forkless configuration - run: cat .docker/launch-config-forkless-nodata.json + run: cat .docker/forkless-config/launch-config-forkless-nodata.json - - uses: actions/setup-node@v3.5.1 + - name: Run find-and-replace to remove slashes from branch name + uses: mad9000/actions-find-and-replace-string@3 + id: branchname with: - node-version: 16 + source: ${{ github.head_ref }} + find: '/' + replace: '-' + - name: Set build SHA + shell: bash + run: | + echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV + - name: Build the stack - run: docker-compose -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build --force-recreate --timeout 300 + run: cd .docker/ && docker build --no-cache --file ./Dockerfile-parachain-upgrade.${{ matrix.network }}.yml --tag uniquenetwork/ci-forkless-nodata-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA . + + - name: Push docker image version + run: docker push uniquenetwork/ci-forkless-nodata-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f + docker system prune -f + + forkless-nodata-tests: + needs: [prepare-execution-marix, forkless-nodata-build] + # The type of runner that the job will run on + runs-on: [self-hosted-ci, large] + + timeout-minutes: 600 + + name: ${{ matrix.network }}-nodata-tests + + continue-on-error: false #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}} + + steps: + - name: Skip if pull request is in Draft + if: github.event.pull_request.draft == true + run: exit 1 + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3.1.0 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Prepare + uses: ./.github/actions/prepare + + - name: Set build SHA + shell: bash + run: | + echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV + + - name: Run find-and-replace to remove slashes from branch name + uses: mad9000/actions-find-and-replace-string@2 + id: branchname + with: + source: ${{ github.head_ref }} + find: '/' + replace: '-' + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.forkless-nodata.j2 + output_file: .docker/docker-compose.forkless-nodata.${{ matrix.network }}.yml + variables: | + NETWORK=${{ matrix.network }} + BUILD_TAG=${{ steps.branchname.outputs.value }}-$BUILD_SHA + + - name: Show build configuration + run: cat .docker/docker-compose.forkless-nodata.${{ matrix.network }}.yml + + - name: Log in to Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.CORE_DOCKERHUB_USERNAME }} + password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose.forkless-nodata.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300 + + - uses: actions/setup-node@v3.5.1 + with: + node-version: 16 + - name: Check if docker logs consist logs related to Runtime Upgrade testing. if: success() run: | counter=160 function check_container_status { - docker inspect -f {{.State.Running}} node-parachain + docker inspect -f {{.State.Running}} forkless-nodata } function do_docker_logs { - docker logs --details node-parachain 2>&1 + docker logs --details forkless-nodata 2>&1 } function is_started { if [ "$(check_container_status)" == "true" ]; then - echo "Container: node-parachain RUNNING"; + echo "Container: forkless-nodata RUNNING"; echo "Check Docker logs" DOCKER_LOGS=$(do_docker_logs) if [[ ${DOCKER_LOGS} = *"🛸 PARACHAINS' RUNTIME UPGRADE TESTING COMPLETE 🛸"* ]];then @@ -133,7 +230,7 @@ return 1 fi else - echo "Container node-parachain not RUNNING" + echo "Container forkless-nodata not RUNNING" echo "Halting all future checks" exit 1 fi @@ -158,12 +255,12 @@ if: success() || failure() uses: jwalton/gh-docker-logs@v2.2.1 with: - dest: './forkless-parachain-upgrade-nodata-logs.${{ matrix.features }}' - images: 'node-parachain' + dest: './forkless-parachain-upgrade-nodata-logs.${{ matrix.network }}' + images: 'forkless-nodata' - name: Show docker logs if: success() || failure() - run: cat './forkless-parachain-upgrade-nodata-logs.${{ matrix.features }}/node-parachain.log' + run: cat './forkless-parachain-upgrade-nodata-logs.${{ matrix.network }}/forkless-nodata.log' - name: Run Parallel tests working-directory: tests @@ -212,7 +309,7 @@ - name: Stop running containers if: always() # run this step always - run: docker-compose -f ".docker/docker-compose.${{ matrix.network }}.yml" down + run: docker-compose -f ".docker/docker-compose.forkless-nodata.${{ matrix.network }}.yml" down - name: Remove builder cache if: always() # run this step always --- a/.github/workflows/try-runtime.yml +++ b/.github/workflows/try-runtime.yml @@ -38,14 +38,14 @@ network {quartz}, wasm_name {quartz}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}} network {unique}, wasm_name {unique}, replica_from_address {${{ env.UNIQUE_REPLICA_FROM }}} - try-runtime: + try-runtime-build: needs: prepare-execution-marix # The type of runner that the job will run on runs-on: [self-hosted-ci] continue-on-error: false #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. - name: ${{ matrix.network }}-try-runtime + name: ${{ matrix.network }}-try-runtime-build strategy: matrix: include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}} @@ -60,25 +60,131 @@ with: ref: ${{ github.head_ref }} #Checking out head commit + # Prepare SHA + - name: Prepare SHA + uses: ./.github/actions/prepare + - name: Read .env file uses: xom9ikk/dotenv@v2 - - name: Generate ENV related extend file for docker-compose + - name: Log in to Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.CORE_DOCKERHUB_USERNAME }} + password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} + + # Build main image for TRY-RUNTIME + - name: Generate ENV related extend Dockerfile file uses: cuchi/jinja2-action@v1.2.0 with: - template: .docker/docker-compose.tmp-try-runtime.j2 - output_file: .docker/docker-compose.try-runtime.${{ matrix.network }}.yml + template: .docker/Dockerfile-try-runtime.j2 + output_file: .docker/Dockerfile-try-runtime.${{ matrix.network }}.yml variables: | RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} NETWORK=${{ matrix.network }} WASM_NAME=${{ matrix.wasm_name }} REPLICA_FROM=${{ matrix.replica_from_address }} + - name: Show build Dockerfile + run: cat .docker/Dockerfile-try-runtime.${{ matrix.network }}.yml + + - name: Run find-and-replace to remove slashes from branch name + uses: mad9000/actions-find-and-replace-string@3 + id: branchname + with: + source: ${{ github.head_ref }} + find: '/' + replace: '-' + + - name: Set build SHA + shell: bash + run: | + echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV + + - name: Build the stack + run: cd .docker/ && docker build --no-cache --file ./Dockerfile-try-runtime.${{ matrix.network }}.yml --tag uniquenetwork/ci-tryruntime-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA . + + - name: Push docker image version + run: docker push uniquenetwork/ci-tryruntime-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA + + - name: Remove builder cache + if: always() # run this step always + run: | + docker builder prune -f + docker system prune -f + + + try-runtime-tests: + needs: [prepare-execution-marix, try-runtime-build] + # The type of runner that the job will run on + runs-on: [self-hosted-ci] + + timeout-minutes: 600 + + name: ${{ matrix.network }}-try-runtime-tests + + continue-on-error: false #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false. + + strategy: + matrix: + include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}} + + steps: + - name: Skip if pull request is in Draft + if: github.event.pull_request.draft == true + run: exit 1 + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3.1.0 + with: + ref: ${{ github.head_ref }} #Checking out head commit + + - name: Prepare + uses: ./.github/actions/prepare + + - name: Set build SHA + shell: bash + run: | + echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV + + - name: Run find-and-replace to remove slashes from branch name + uses: mad9000/actions-find-and-replace-string@2 + id: branchname + with: + source: ${{ github.head_ref }} + find: '/' + replace: '-' + + - name: Read .env file + uses: xom9ikk/dotenv@v2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.try-runtime.j2 + output_file: .docker/docker-compose.try-runtime.${{ matrix.network }}.yml + variables: | + NETWORK=${{ matrix.network }} + BUILD_TAG=${{ steps.branchname.outputs.value }}-$BUILD_SHA + - name: Show build configuration run: cat .docker/docker-compose.try-runtime.${{ matrix.network }}.yml + - uses: actions/setup-node@v3.5.1 + with: + node-version: 16 + + - name: Log in to Docker Hub + uses: docker/login-action@v2.0.0 + with: + username: ${{ secrets.CORE_DOCKERHUB_USERNAME }} + password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} + - name: Build the stack - run: docker-compose -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" up --build --force-recreate --timeout 300 --remove-orphans --exit-code-from try-runtime + run: docker-compose -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300 - name: Collect Docker Logs if: success() || failure() --- a/.github/workflows/xcm.yml +++ b/.github/workflows/xcm.yml @@ -360,14 +360,14 @@ - name: Generate ENV related extend file for docker-compose uses: cuchi/jinja2-action@v1.2.0 with: - template: .docker/docker-compose.tmp-xcm-tests.j2 - output_file: .docker/docker-compose.xcm-tests.${{ matrix.network }}.yml + template: .docker/docker-compose.xcm.j2 + output_file: .docker/docker-compose.xcm.${{ matrix.network }}.yml variables: | NETWORK=${{ matrix.network }} BUILD_TAG=${{ steps.branchname.outputs.value }}-$BUILD_SHA - name: Show build configuration - run: cat .docker/docker-compose.xcm-tests.${{ matrix.network }}.yml + run: cat .docker/docker-compose.xcm.${{ matrix.network }}.yml - uses: actions/setup-node@v3.5.1 with: @@ -380,7 +380,7 @@ password: ${{ secrets.CORE_DOCKERHUB_TOKEN }} - name: Build the stack - run: docker-compose -f ".docker/docker-compose.xcm-tests.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300 + run: docker-compose -f ".docker/docker-compose.xcm.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300 # 🚀 POLKADOT LAUNCH COMPLETE 🚀 - name: Check if docker logs consist messages related to testing of xcm tests @@ -456,7 +456,7 @@ - name: Stop running containers if: always() # run this step always - run: docker-compose -f ".docker/docker-compose.xcm-tests.${{ matrix.network }}.yml" down + run: docker-compose -f ".docker/docker-compose.xcm.${{ matrix.network }}.yml" down - name: Clean Workspace if: always()