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]49505152 timeout-minutes: 2880 5354 name: ${{ matrix.network }}5556 continue-on-error: true 5758 strategy:59 matrix:60 include: ${{fromJson(needs.nodes-execution-matrix.outputs.matrix)}}6162 steps:6364 - name: Clean Workspace65 uses: AutoModality/action-clean@v1.1.06667 68 - uses: actions/checkout@v369 with:70 ref: ${{ github.head_ref }} 7172 - name: Read .env file73 uses: xom9ikk/dotenv@v1.0.27475 - name: Generate ENV related extend file for docker-compose76 uses: cuchi/jinja2-action@v1.2.077 with:78 template: .docker/docker-compose.tmp-node.j279 output_file: .docker/docker-compose.node.${{ matrix.network }}.yml80 variables: |81 REPO_URL=${{ github.server_url }}/${{ github.repository }}.git82 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}83 POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_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-${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-*.json 183 reporter: mochawesome-json184 fail-on-error: 'false'185186187 188 189 190 191 192 193 194 195 196 197 198199 200 201 202 203 204 205 206 207 208209 210 211 212 213 214 215216 217 218 219 220 221 222 223 224 225 226 - name: Send SIGUSR1 to polkadot-launch process227 if: success() || failure()228 run: |229 #Get PID of polkadot-launch230 ContainerID=$(docker ps -aqf "name=node-parachain")231 PID=$(docker exec node-parachain pidof 'polkadot-launch')232 echo "Polkadot-launch PID: $PID"233 #Send SIGUSR1 signal to $PID234 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 249 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.250 if: success()251 run: |252 counter=160253 function check_container_status {254 docker inspect -f {{.State.Running}} node-parachain255 }256 function do_docker_logs {257 docker logs --details node-parachain 2>&1258 }259 function is_started {260 if [ "$(check_container_status)" == "true" ]; then261 echo "Container: node-parachain RUNNING";262 echo "Check Docker logs"263 DOCKER_LOGS=$(do_docker_logs)264 if [[ ${DOCKER_LOGS} = *"All parachain collators restarted with the new binaries."* ]];then265 echo "🌗 All parachain collators restarted with the new binaries."266 return 0267 else268 echo "Message not found in logs output, repeating..."269 return 1270 fi271 else272 echo "Container node-parachain NOT RUNNING"273 echo "Halting all future checks"274 exit 1275 fi276 echo "something goes wrong"277 exit 1278 }279 while ! is_started; do280 echo "Waiting for special message in log files "281 sleep 30s282 counter=$(( $counter - 1 ))283 echo "Counter: $counter"284 if [ "$counter" -gt "0" ]; then285 continue286 else287 break288 fi289 done290 echo "Halting script"291 exit 0292 shell: bash293 294 295 - name: Run tests after Node Parachain upgrade296 working-directory: ${{ matrix.mainnet_branch }}/tests297 run: |298 yarn install299 yarn add mochawesome300 node scripts/readyness.js301 echo "Ready to start tests"302 yarn polkadot-types303 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${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-*.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 ./