1234name: nodes-only update567on:8 workflow_call:9101112jobs:1314 nodes-execution-matrix:1516 name: execution matrix1718 runs-on: self-hosted-ci19 outputs:20 matrix: ${{ steps.create_matrix.outputs.matrix }}2122 steps:2324 - name: Clean Workspace25 uses: AutoModality/action-clean@v1.1.02627 28 - uses: actions/checkout@v329 with:30 ref: ${{ github.head_ref }} 3132 - name: Read .env file33 uses: xom9ikk/dotenv@v23435 - name: Create Execution matrix36 uses: CertainLach/create-matrix-action@v337 id: create_matrix38 with:39 matrix: |40 network {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}41 network {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}42 network {unique}, mainnet_branch {${{ env.UNIQUE_MAINNET_BRANCH }}}43444546 nodes-only-update:47 needs: nodes-execution-matrix48 49 runs-on: [self-hosted-ci,large]5051 timeout-minutes: 2880 5253 name: ${{ matrix.network }}5455 continue-on-error: true 5657 strategy:58 matrix:59 include: ${{fromJson(needs.nodes-execution-matrix.outputs.matrix)}}6061 steps:6263 - name: Clean Workspace64 uses: AutoModality/action-clean@v1.1.06566 67 - uses: actions/checkout@v368 with:69 ref: ${{ github.head_ref }} 7071 - name: Read .env file72 uses: xom9ikk/dotenv@v27374 - name: Generate ENV related extend file for docker-compose75 uses: cuchi/jinja2-action@v1.2.076 with:77 template: .docker/docker-compose.tmp-node.j278 output_file: .docker/docker-compose.node.${{ matrix.network }}.yml79 variables: |80 REPO_URL=${{ github.server_url }}/${{ github.repository }}.git81 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}82 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }}83 POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }}84 POLKADOT_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }}85 MAINNET_TAG=${{ matrix.mainnet_tag }}86 MAINNET_BRANCH=${{ matrix.mainnet_branch }}87 NETWORK=${{ matrix.network }}88 BRANCH=${{ github.head_ref }}8990 - name: Show build configuration91 run: cat .docker/docker-compose.node.${{ matrix.network }}.yml9293 - name: Generate launch-config-forkless-nodata.json94 uses: cuchi/jinja2-action@v1.2.095 with:96 template: .docker/forkless-config/launch-config-forkless-nodata.j297 output_file: .docker/launch-config-forkless-nodata.json98 variables: |99 NETWORK=${{ matrix.network }}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.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 node scripts/readyness.js169 echo "Ready to start tests"170 yarn polkadot-types171 NOW=$(date +%s) && yarn testConnection --reporter mochawesome --reporter-options reportFilename=test-before-${NOW}172 env:173 RPC_URL: http://127.0.0.1:9933/174175 - name: Upload Test Report Before Node upgrade176 uses: phoenix-actions/test-reporting@v8177 id: test-report-before178 if: success() || failure() 179 with:180 name: Tests before node upgrade ${{ matrix.network }} 181 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-before-*.json 182 reporter: mochawesome-json183 fail-on-error: 'false'184 token: ${{ secrets.GITHUB_TOKEN }}185186 187 188 189 190 191 192 193 194 195 196 197198 199 200 201 202 203 204 205 206 207208 209 210 211 212 213 214215 216 217 218 219 220 221 222 223 224225 - name: Send SIGUSR1 to polkadot-launch process226 if: success() || failure()227 run: |228 #Get PID of polkadot-launch229 ContainerID=$(docker ps -aqf "name=node-parachain")230 PID=$(docker exec node-parachain pidof 'polkadot-launch')231 sleep 30s232 echo -e "Show logs of node-parachain container.\n"233 docker logs ${ContainerID}234 echo -e "\n"235 echo -e "Restart polkadot-launch process: $PID\n"236 docker exec node-parachain kill -SIGUSR1 ${PID}237 echo "SIGUSR1 sent to Polkadot-launch PID: $PID"238 docker logs ${ContainerID}239240 - name: Get chain logs in case of docker image crashed after Polkadot Launch restart241 if: failure() 242 run: |243 docker exec node-parachain tail -n 1000 /polkadot-launch/9944.log244 docker exec node-parachain tail -n 1000 /polkadot-launch/9945.log245 docker exec node-parachain tail -n 1000 /polkadot-launch/alice.log246247 - name: copy chain log files from container to the host248 if: success() || failure() 249 run: |250 mkdir -p /tmp/node-only-update251 docker cp node-parachain:/polkadot-launch/9944.log /tmp/node-only-update/252 docker cp node-parachain:/polkadot-launch/9945.log /tmp/node-only-update/253 docker cp node-parachain:/polkadot-launch/alice.log /tmp/node-only-update/254255 - name: Upload chain log files256 if: success() || failure()257 uses: actions/upload-artifact@v3258 with:259 name: node-only-update-chain-logs260 path: /tmp/node-only-update/261 if-no-files-found: warn262263 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.264 if: success()265 run: |266 counter=160267 function check_container_status {268 docker inspect -f {{.State.Running}} node-parachain269 }270 function do_docker_logs {271 docker logs --details node-parachain 2>&1272 }273 function is_started {274 if [ "$(check_container_status)" == "true" ]; then275 echo "Container: node-parachain RUNNING";276 echo "Check Docker logs"277 DOCKER_LOGS=$(do_docker_logs)278 if [[ ${DOCKER_LOGS} = *"All parachain collators restarted with the new binaries."* ]];then279 echo "🌗 All parachain collators restarted with the new binaries."280 return 0281 else282 echo "Message not found in logs output, repeating..."283 return 1284 fi285 else286 echo "Container node-parachain NOT RUNNING"287 echo "Halting all future checks"288 exit 1289 fi290 echo "something goes wrong"291 exit 1292 }293 while ! is_started; do294 echo "Waiting for special message in log files "295 sleep 30s296 counter=$(( $counter - 1 ))297 echo "Counter: $counter"298 if [ "$counter" -gt "0" ]; then299 continue300 else301 break302 fi303 done304 echo "Halting script"305 exit 0306 shell: bash307308 309 - name: Run tests after Node Parachain upgrade310 if: success() || failure() 311 working-directory: ${{ matrix.mainnet_branch }}/tests312 run: |313 yarn install314 yarn add mochawesome315 node scripts/readyness.js316 echo "Ready to start tests"317 yarn polkadot-types318 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-after-${NOW}319 env:320 RPC_URL: http://127.0.0.1:9933/321322 - name: Test Report After Node upgrade323 uses: phoenix-actions/test-reporting@v8324 id: test-report-after325 if: success() || failure() 326 with:327 name: Tests after node upgrade ${{ matrix.network }} 328 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-after-*.json 329 reporter: mochawesome-json330 fail-on-error: 'false'331 token: ${{ secrets.GITHUB_TOKEN }}332333 334 335 336 337 338 339 340 341 342 343 344 345346 347 348 349 350 351 352 353 354 355356 357 358 359 360 361 362363 364 365 366 367 368 369 370 371 372373374 - name: Stop running containers375 if: always() 376 run: docker-compose -f ".docker/docker-compose.node.${{ matrix.network }}.yml" down --volumes377378 - name: Remove builder cache379 if: always() 380 run: |381 docker builder prune -f -a382 docker system prune -f383 docker image prune -f -a384385 - name: Remove repo at the end386 if: always() 387 run: |388 ls -ls ./