1name: nodes-only update234on:5 workflow_call:67env:8 REPO_URL: ${{ github.server_url }}/${{ github.repository }}91011jobs:1213 nodes-execution-matrix:1415 name: execution matrix1617 runs-on: self-hosted-ci18 outputs:19 matrix: ${{ steps.create_matrix.outputs.matrix }}2021 steps:2223 - name: Clean Workspace24 uses: AutoModality/action-clean@v1.1.02526 27 - uses: actions/checkout@v328 with:29 ref: ${{ github.head_ref }} 3031 - name: Read .env file32 uses: xom9ikk/dotenv@v1.0.23334 - name: Create Execution matrix35 uses: CertainLach/create-matrix-action@v336 id: create_matrix37 with:38 matrix: |39 network {opal}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}}40 network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}41 network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}42434445 nodes-only-update:46 needs: nodes-execution-matrix47 48 runs-on: [self-hosted-ci,large]4950 timeout-minutes: 2880 5152 name: ${{ matrix.network }}5354 continue-on-error: true 5556 strategy:57 matrix:58 include: ${{fromJson(needs.nodes-execution-matrix.outputs.matrix)}}5960 steps:6162 - name: Clean Workspace63 uses: AutoModality/action-clean@v1.1.06465 66 - uses: actions/checkout@v367 with:68 ref: ${{ github.head_ref }} 6970 - name: Read .env file71 uses: xom9ikk/dotenv@v1.0.27273 - name: Generate ENV related extend file for docker-compose74 uses: cuchi/jinja2-action@v1.2.075 with:76 template: .docker/docker-compose.tmp-node.j277 output_file: .docker/docker-compose.node.${{ matrix.network }}.yml78 variables: |79 REPO_URL=${{ github.server_url }}/${{ github.repository }}.git80 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}81 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}82 POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }}83 MAINNET_TAG=${{ matrix.mainnet_tag }}84 MAINNET_BRANCH=${{ matrix.mainnet_branch }}85 FEATURE=${{ matrix.features }}86 RUNTIME=${{ matrix.runtime }}87 BRANCH=${{ github.head_ref }}8889 - name: Show build configuration90 run: cat .docker/docker-compose.node.${{ matrix.network }}.yml9192 - name: Generate launch-config-forkless-nodata.json93 uses: cuchi/jinja2-action@v1.2.094 with:95 template: .docker/forkless-config/launch-config-forkless-nodata.j296 output_file: .docker/launch-config-forkless-nodata.json97 variables: |98 FEATURE=${{ matrix.features }}99 RUNTIME=${{ matrix.runtime }}100101 - name: Show launch-config-forkless configuration102 run: cat .docker/launch-config-forkless-nodata.json103104 - uses: actions/setup-node@v3105 with:106 node-version: 16107108 - name: Build the stack109 run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" up -d --build --remove-orphans --force-recreate --timeout 300110111 112 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.113 if: success()114 run: |115 counter=160116 function check_container_status {117 docker inspect -f {{.State.Running}} node-parachain118 }119 function do_docker_logs {120 docker logs --details node-parachain 2>&1121 }122 function is_started {123 if [ "$(check_container_status)" == "true" ]; then124 echo "Container: node-parachain RUNNING";125 echo "Check Docker logs"126 DOCKER_LOGS=$(do_docker_logs)127 if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then128 echo "🚀 POLKADOT LAUNCH COMPLETE 🚀"129 return 0130 else131 echo "Message not found in logs output, repeating..."132 return 1133 fi134 else135 echo "Container node-parachain NOT RUNNING"136 echo "Halting all future checks"137 exit 1138 fi139 echo "something goes wrong"140 exit 1141 }142 while ! is_started; do143 echo "Waiting for special message in log files "144 sleep 30s145 counter=$(( $counter - 1 ))146 echo "Counter: $counter"147 if [ "$counter" -gt "0" ]; then148 continue149 else150 break151 fi152 done153 echo "Halting script"154 exit 0155 shell: bash156157 - name: Checkout at '${{ matrix.mainnet_branch }}' branch158 uses: actions/checkout@master159 with:160 ref: ${{ matrix.mainnet_branch }} 161 path: ${{ matrix.mainnet_branch }}162163 - name: Run tests before Node Parachain upgrade164 working-directory: ${{ matrix.mainnet_branch }}/tests165 run: |166 yarn install167 yarn add mochawesome168 echo "Ready to start tests"169 yarn polkadot-types170 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-before-${NOW}171 env:172 RPC_URL: http://127.0.0.1:9933/173174 - name: Upload Test Report Before Node upgrade175 uses: phoenix-actions/test-reporting@v8176 id: test-report-before177 if: success() || failure() 178 with:179 name: Tests before node upgrade ${{ matrix.network }} 180 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-before-*.json 181 reporter: mochawesome-json182 fail-on-error: 'false'183184 185 186 187 188 189 190 191 192 193 194 195196 197 198 199 200 201 202 203 204 205206 207 208 209 210 211 212213 214 215 216 217 218 219 220 221 222 223 - name: Send SIGUSR1 to polkadot-launch process224 if: success() || failure()225 run: |226 #Get PID of polkadot-launch227 ContainerID=$(docker ps -aqf "name=node-parachain")228 PID=$(docker exec node-parachain pidof 'polkadot-launch')229 sleep 30s230 echo -e "Show logs of node-parachain container.\n"231 docker logs ${ContainerID}232 echo -e "\n"233 echo -e "Restart polkadot-launch process: $PID\n"234 docker exec node-parachain kill -SIGUSR1 ${PID}235 echo "SIGUSR1 sent to Polkadot-launch PID: $PID"236 docker logs ${ContainerID}237 238 - name: Get chain logs in case of docker image crashed after Polkadot Launch restart239 if: failure() 240 run: |241 docker exec node-parachain cat /polkadot-launch/9944.log242 docker exec node-parachain cat /polkadot-launch/9945.log243 docker exec node-parachain cat /polkadot-launch/alice.log244 docker exec node-parachain cat /polkadot-launch/eve.log245 docker exec node-parachain cat /polkadot-launch/dave.log246 docker exec node-parachain cat /polkadot-launch/charlie.log 247248 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.249 if: success()250 run: |251 counter=160252 function check_container_status {253 docker inspect -f {{.State.Running}} node-parachain254 }255 function do_docker_logs {256 docker logs --details node-parachain 2>&1257 }258 function is_started {259 if [ "$(check_container_status)" == "true" ]; then260 echo "Container: node-parachain RUNNING";261 echo "Check Docker logs"262 DOCKER_LOGS=$(do_docker_logs)263 if [[ ${DOCKER_LOGS} = *"All parachain collators restarted with the new binaries."* ]];then264 echo "🌗 All parachain collators restarted with the new binaries."265 return 0266 else267 echo "Message not found in logs output, repeating..."268 return 1269 fi270 else271 echo "Container node-parachain NOT RUNNING"272 echo "Halting all future checks"273 exit 1274 fi275 echo "something goes wrong"276 exit 1277 }278 while ! is_started; do279 echo "Waiting for special message in log files "280 sleep 30s281 counter=$(( $counter - 1 ))282 echo "Counter: $counter"283 if [ "$counter" -gt "0" ]; then284 continue285 else286 break287 fi288 done289 echo "Halting script"290 exit 0291 shell: bash292 293 294 - name: Run tests after Node Parachain upgrade295 working-directory: ${{ matrix.mainnet_branch }}/tests296 run: |297 yarn install298 yarn add mochawesome299 echo "Ready to start tests"300 yarn polkadot-types301 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-after-${NOW}302 env:303 RPC_URL: http://127.0.0.1:9933/304305 - name: Test Report After Node upgrade306 uses: phoenix-actions/test-reporting@v8307 id: test-report-after308 if: success() || failure() 309 with:310 name: Tests after node upgrade ${{ matrix.network }} 311 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-after-*.json 312 reporter: mochawesome-json313 fail-on-error: 'false'314315 316 317 318 319 320 321 322 323 324 325 326 327328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344345 346 347 348 349 350 351 352 353 354355356 - name: Stop running containers357 if: always() 358 run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" down --volumes359360 - name: Remove builder cache361 if: always() 362 run: |363 docker builder prune -f -a364 docker system prune -f365 docker image prune -f -a366367 - name: Remove repo at the end368 if: always() 369 run: |370 ls -ls ./