git.delta.rocks / unique-network / refs/commits / 1f5718ca8c83

difftreelog

source

.github/workflows/try-runtime.yml8.9 KiBsourcehistory
1# Try-runtime checks2# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2587656213/Try+runtime34# Triger: only call from main workflow(re-usable workflows)5on:6  workflow_call:78# A workflow run is made up of one or more jobs that can run sequentially or in parallel9jobs:10  prepare-execution-marix:1112    name: Prepare execution matrix1314    runs-on: self-hosted-ci15    outputs:16      matrix: ${{ steps.create_matrix.outputs.matrix }}1718    steps:1920      - name: Clean Workspace21        uses: AutoModality/action-clean@v1.1.02223      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it24      - uses: actions/checkout@v3.1.025        with:26          ref: ${{ github.head_ref }}  #Checking out head commit2728      - name: Read .env file29        uses: xom9ikk/dotenv@v23031      - name: Create Execution matrix32        uses: CertainLach/create-matrix-action@v433        id: create_matrix34        with:35          matrix: |36            network {opal}, wasm_name {opal}, replica_from_address {${{ env.OPAL_REPLICA_FROM }}}37            network {sapphire}, wasm_name {quartz}, replica_from_address {${{ env.SAPPHIRE_REPLICA_FROM }}}38            network {quartz}, wasm_name {quartz}, replica_from_address {${{ env.QUARTZ_REPLICA_FROM }}}39            network {unique}, wasm_name {unique}, replica_from_address {${{ env.UNIQUE_REPLICA_FROM }}}4041  try-runtime-build:42    needs: prepare-execution-marix4344    # The type of runner that the job will run on45    runs-on: [self-hosted-ci]46    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.4748    name: ${{ matrix.network }}-try-runtime-build49    strategy:50      matrix:51        include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}5253    steps:5455      - name: Clean Workspace56        uses: AutoModality/action-clean@v1.1.05758      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it59      - uses: actions/checkout@v3.1.060        with:61          ref: ${{ github.head_ref }}  #Checking out head commit6263      # Prepare SHA  64      - name: Prepare SHA65        uses: ./.github/actions/prepare6667      - name: Read .env file68        uses: xom9ikk/dotenv@v26970      - name: Log in to Docker Hub71        uses: docker/login-action@v2.1.072        with:73          username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}74          password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}7576      # Build main image for TRY-RUNTIME77      - name: Generate ENV related extend Dockerfile file78        uses: cuchi/jinja2-action@v1.2.079        with:80          template: .docker/Dockerfile-try-runtime.j281          output_file: .docker/Dockerfile-try-runtime.${{ matrix.network }}.yml82          variables: |83            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}84            NETWORK=${{ matrix.network }}85            WASM_NAME=${{ matrix.wasm_name }}86            REPLICA_FROM=${{ matrix.replica_from_address }}8788      - name: Show build Dockerfile89        run: cat .docker/Dockerfile-try-runtime.${{ matrix.network }}.yml9091      - name: Run find-and-replace to remove slashes from branch name92        uses: mad9000/actions-find-and-replace-string@493        id: branchname94        with:95          source: ${{ github.head_ref }}96          find: '/'97          replace: '-'9899      - name: Set build SHA100        shell: bash101        run: |102          echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV103104      - name: Build the stack105        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 ../106107      - name: Push docker image version108        run: docker push uniquenetwork/ci-tryruntime-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-$BUILD_SHA109110      - name: Remove builder cache111        if: always()                   # run this step always112        run: |113          docker builder prune -f114          docker system prune -f115116117  try-runtime-tests:118    needs: [prepare-execution-marix, try-runtime-build]119    # The type of runner that the job will run on120    runs-on: [medium]121122    timeout-minutes: 600123124    name: ${{ matrix.network }}-try-runtime-tests125126    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.127128    strategy:129      matrix:130        include: ${{fromJson(needs.prepare-execution-marix.outputs.matrix)}}131132    steps:133      - name: Skip if pull request is in Draft134        if: github.event.pull_request.draft == true135        run: exit 1136137      - name: Clean Workspace138        uses: AutoModality/action-clean@v1.1.0139140      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it141      - uses: actions/checkout@v3.1.0142        with:143          ref: ${{ github.head_ref }}  #Checking out head commit144145      - name: Prepare146        uses: ./.github/actions/prepare147148      - name: Set build SHA149        shell: bash150        run: |151          echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV152153      - name: Run find-and-replace to remove slashes from branch name154        uses: mad9000/actions-find-and-replace-string@4155        id: branchname156        with:157          source: ${{ github.head_ref }}158          find: '/'159          replace: '-'160161      - name: Read .env file162        uses: xom9ikk/dotenv@v2163164      - name: Generate ENV related extend file for docker-compose165        uses: cuchi/jinja2-action@v1.2.0166        with:167          template: .docker/docker-compose.try-runtime.j2168          output_file: .docker/docker-compose.try-runtime.${{ matrix.network }}.yml169          variables: |170            NETWORK=${{ matrix.network }}171            BUILD_TAG=${{ steps.branchname.outputs.value }}-$BUILD_SHA172173      - name: Show build configuration174        run: cat .docker/docker-compose.try-runtime.${{ matrix.network }}.yml175176      - uses: actions/setup-node@v3.5.1177        with:178          node-version: 18179180      - name: Log in to Docker Hub181        uses: docker/login-action@v2.1.0182        with:183          username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}184          password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}185186      - name: Build the stack187        run: docker-compose -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" up -d --remove-orphans --force-recreate --timeout 300188189      - name: Check if docker logs consist logs related to Runtime Upgrade testing.190        if: success()191        run: |192          counter=300193          counter_life=0194          function check_container_status {195                docker inspect -f {{.State.Running}} try-runtime196          }197          function do_docker_logs {198                docker logs --details try-runtime 2>&1 | grep -i 'TryRuntime_on_runtime_upgrade executed without errors. Consumed'199          }200          function is_started {201                if [ "$(check_container_status)" == "true" ]; then202                        echo "Container: try-runtime RUNNING";203                        echo "Check Docker logs"204                        DOCKER_LOGS=$(do_docker_logs)205                        if [[ -n ${DOCKER_LOGS} ]]; then206                                echo "TryRuntime_on_runtime_upgrade executed without errors."207                                return 0208                        else209                                echo "Message not found in logs output, repeating..."210                                return 1211                        fi212                else213                    (( counter_life++ ))214                    echo "Container try-runtime not RUNNING" $counter_life "time"215                    return 1216                fi217          }218219          while ! is_started; do220                echo "Waiting for special message in log files "221                sleep 30s222                counter=$(( $counter - 1 ))223                echo "Counter: $counter"224                if [ "$counter" -gt "0" ] && [ "$counter_life" -lt "3" ]; then225                         continue226                else227                         echo "Counter reached zero, yet upgrade is not finished correctly or Container try-runtime is not RUNNING"228                         exit 1229                fi230          done231          echo "Halting script"232          exit 0233        shell: bash234235      - name: Collect Docker Logs236        if: success() || failure()237        uses: jwalton/gh-docker-logs@v2.2.1238        with:239          dest: './try-runtime-logs.${{ matrix.network }}'240241      - name: Show docker logs242        if: success() || failure()243        run: cat './try-runtime-logs.${{ matrix.network }}/try-runtime.log'244245      - name: Stop running containers246        if: always()                   # run this step always247        run: docker-compose -f ".docker/docker-compose.try-runtime.${{ matrix.network }}.yml" down248249      - name: Remove builder cache250        if: always()                   # run this step always251        run: |252          docker builder prune -f -a253          docker system prune -f254          docker image prune -f -a