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}, runtime {opal}, features {opal-runtime}, mainnet_branch {${{ env.OPAL_MAINNET_TAG }}}41 network {quartz}, runtime {quartz}, features {quartz-runtime}, mainnet_branch {${{ env.QUARTZ_MAINNET_TAG }}}42 network {unique}, runtime {unique}, features {unique-runtime}, mainnet_branch {${{ env.UNIQUE_MAINNET_TAG }}}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 FEATURE=${{ matrix.features }}88 RUNTIME=${{ matrix.runtime }}89 BRANCH=${{ github.head_ref }}9091 - name: Show build configuration92 run: cat .docker/docker-compose.node.${{ matrix.network }}.yml9394 - name: Generate launch-config-forkless-nodata.json95 uses: cuchi/jinja2-action@v1.2.096 with:97 template: .docker/forkless-config/launch-config-forkless-nodata.j298 output_file: .docker/launch-config-forkless-nodata.json99 variables: |100 FEATURE=${{ matrix.features }}101 RUNTIME=${{ matrix.runtime }}102103 - name: Show launch-config-forkless configuration104 run: cat .docker/launch-config-forkless-nodata.json105106 - uses: actions/setup-node@v3107 with:108 node-version: 16109110 - name: Build the stack111 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 300112113 114 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.115 if: success()116 run: |117 counter=160118 function check_container_status {119 docker inspect -f {{.State.Running}} node-parachain120 }121 function do_docker_logs {122 docker logs --details node-parachain 2>&1123 }124 function is_started {125 if [ "$(check_container_status)" == "true" ]; then126 echo "Container: node-parachain RUNNING";127 echo "Check Docker logs"128 DOCKER_LOGS=$(do_docker_logs)129 if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then130 echo "🚀 POLKADOT LAUNCH COMPLETE 🚀"131 return 0132 else133 echo "Message not found in logs output, repeating..."134 return 1135 fi136 else137 echo "Container node-parachain NOT RUNNING"138 echo "Halting all future checks"139 exit 1140 fi141 echo "something goes wrong"142 exit 1143 }144 while ! is_started; do145 echo "Waiting for special message in log files "146 sleep 30s147 counter=$(( $counter - 1 ))148 echo "Counter: $counter"149 if [ "$counter" -gt "0" ]; then150 continue151 else152 break153 fi154 done155 echo "Halting script"156 exit 0157 shell: bash158159 - name: Checkout at '${{ matrix.mainnet_branch }}' branch160 uses: actions/checkout@master161 with:162 ref: ${{ matrix.mainnet_branch }} 163 path: ${{ matrix.mainnet_branch }}164165 - name: Run tests before Node Parachain upgrade166 working-directory: ${{ matrix.mainnet_branch }}/tests167 run: |168 yarn install169 yarn add mochawesome170 echo "Ready to start tests"171 yarn polkadot-types172 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-before-${NOW}173 env:174 RPC_URL: http://127.0.0.1:9933/175176 - name: Upload Test Report Before Node upgrade177 uses: phoenix-actions/test-reporting@v8178 id: test-report-before179 if: success() || failure() 180 with:181 name: Tests before node upgrade ${{ matrix.network }} 182 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-before-*.json 183 reporter: mochawesome-json184 fail-on-error: 'false'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 224 225 - 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}239 240 - name: Get chain logs in case of docker image crashed after Polkadot Launch restart241 if: failure() 242 run: |243 docker exec node-parachain cat /polkadot-launch/9944.log244 docker exec node-parachain cat /polkadot-launch/9945.log245 docker exec node-parachain cat /polkadot-launch/alice.log246 docker exec node-parachain cat /polkadot-launch/eve.log247 docker exec node-parachain cat /polkadot-launch/dave.log248 docker exec node-parachain cat /polkadot-launch/charlie.log 249250 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.251 if: success()252 run: |253 counter=160254 function check_container_status {255 docker inspect -f {{.State.Running}} node-parachain256 }257 function do_docker_logs {258 docker logs --details node-parachain 2>&1259 }260 function is_started {261 if [ "$(check_container_status)" == "true" ]; then262 echo "Container: node-parachain RUNNING";263 echo "Check Docker logs"264 DOCKER_LOGS=$(do_docker_logs)265 if [[ ${DOCKER_LOGS} = *"All parachain collators restarted with the new binaries."* ]];then266 echo "🌗 All parachain collators restarted with the new binaries."267 return 0268 else269 echo "Message not found in logs output, repeating..."270 return 1271 fi272 else273 echo "Container node-parachain NOT RUNNING"274 echo "Halting all future checks"275 exit 1276 fi277 echo "something goes wrong"278 exit 1279 }280 while ! is_started; do281 echo "Waiting for special message in log files "282 sleep 30s283 counter=$(( $counter - 1 ))284 echo "Counter: $counter"285 if [ "$counter" -gt "0" ]; then286 continue287 else288 break289 fi290 done291 echo "Halting script"292 exit 0293 shell: bash294 295 296 - name: Run tests after Node Parachain upgrade297 working-directory: ${{ matrix.mainnet_branch }}/tests298 run: |299 yarn install300 yarn add mochawesome301 echo "Ready to start tests"302 yarn polkadot-types303 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-after-${NOW}304 env:305 RPC_URL: http://127.0.0.1:9933/306307 - name: Test Report After Node upgrade308 uses: phoenix-actions/test-reporting@v8309 id: test-report-after310 if: success() || failure() 311 with:312 name: Tests after node upgrade ${{ matrix.network }} 313 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-after-*.json 314 reporter: mochawesome-json315 fail-on-error: 'false'316317 318 319 320 321 322 323 324 325 326 327 328 329330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346347 348 349 350 351 352 353 354 355 356357358 - name: Stop running containers359 if: always() 360 run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" down --volumes361362 - name: Remove builder cache363 if: always() 364 run: |365 docker builder prune -f -a366 docker system prune -f367 docker image prune -f -a368369 - name: Remove repo at the end370 if: always() 371 run: |372 ls -ls ./