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@v1.0.23435 - 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@v1.0.27374 - 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_MAINNET_BRANCH=${{ env.POLKADOT_MAINNET_BRANCH }}84 MAINNET_TAG=${{ matrix.mainnet_tag }}85 MAINNET_BRANCH=${{ matrix.mainnet_branch }}86 FEATURE=${{ matrix.features }}87 RUNTIME=${{ matrix.runtime }}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 FEATURE=${{ matrix.features }}100 RUNTIME=${{ matrix.runtime }}101102 - name: Show launch-config-forkless configuration103 run: cat .docker/launch-config-forkless-nodata.json104105 - uses: actions/setup-node@v3106 with:107 node-version: 16108109 - name: Build the stack110 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 300111112 113 - name: Check if docker logs consist messages related to testing of Node Parachain Upgrade.114 if: success()115 run: |116 counter=160117 function check_container_status {118 docker inspect -f {{.State.Running}} node-parachain119 }120 function do_docker_logs {121 docker logs --details node-parachain 2>&1122 }123 function is_started {124 if [ "$(check_container_status)" == "true" ]; then125 echo "Container: node-parachain RUNNING";126 echo "Check Docker logs"127 DOCKER_LOGS=$(do_docker_logs)128 if [[ ${DOCKER_LOGS} = *"POLKADOT LAUNCH COMPLETE"* ]];then129 echo "🚀 POLKADOT LAUNCH COMPLETE 🚀"130 return 0131 else132 echo "Message not found in logs output, repeating..."133 return 1134 fi135 else136 echo "Container node-parachain NOT RUNNING"137 echo "Halting all future checks"138 exit 1139 fi140 echo "something goes wrong"141 exit 1142 }143 while ! is_started; do144 echo "Waiting for special message in log files "145 sleep 30s146 counter=$(( $counter - 1 ))147 echo "Counter: $counter"148 if [ "$counter" -gt "0" ]; then149 continue150 else151 break152 fi153 done154 echo "Halting script"155 exit 0156 shell: bash157158 - name: Checkout at '${{ matrix.mainnet_branch }}' branch159 uses: actions/checkout@master160 with:161 ref: ${{ matrix.mainnet_branch }} 162 path: ${{ matrix.mainnet_branch }}163164 - name: Run tests before Node Parachain upgrade165 working-directory: ${{ matrix.mainnet_branch }}/tests166 run: |167 yarn install168 yarn add mochawesome169 echo "Ready to start tests"170 yarn polkadot-types171 NOW=$(date +%s) && yarn test --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'184185 186 187 188 189 190 191 192 193 194 195 196197 198 199 200 201 202 203 204 205 206207 208 209 210 211 212 213214 215 216 217 218 219 220 221 222 223 224 - name: Send SIGUSR1 to polkadot-launch process225 if: success() || failure()226 run: |227 #Get PID of polkadot-launch228 ContainerID=$(docker ps -aqf "name=node-parachain")229 PID=$(docker exec node-parachain pidof 'polkadot-launch')230 sleep 30s231 echo -e "Show logs of node-parachain container.\n"232 docker logs ${ContainerID}233 echo -e "\n"234 echo -e "Restart polkadot-launch process: $PID\n"235 docker exec node-parachain kill -SIGUSR1 ${PID}236 echo "SIGUSR1 sent to Polkadot-launch PID: $PID"237 docker logs ${ContainerID}238 239 - name: Get chain logs in case of docker image crashed after Polkadot Launch restart240 if: failure() 241 run: |242 docker exec node-parachain cat /polkadot-launch/9944.log243 docker exec node-parachain cat /polkadot-launch/9945.log244 docker exec node-parachain cat /polkadot-launch/alice.log245 docker exec node-parachain cat /polkadot-launch/eve.log246 docker exec node-parachain cat /polkadot-launch/dave.log247 docker exec node-parachain cat /polkadot-launch/charlie.log 248249 - 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 echo "Ready to start tests"301 yarn polkadot-types302 NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-after-${NOW}303 env:304 RPC_URL: http://127.0.0.1:9933/305306 - name: Test Report After Node upgrade307 uses: phoenix-actions/test-reporting@v8308 id: test-report-after309 if: success() || failure() 310 with:311 name: Tests after node upgrade ${{ matrix.network }} 312 path: ${{ matrix.mainnet_branch }}/tests/mochawesome-report/test-after-*.json 313 reporter: mochawesome-json314 fail-on-error: 'false'315316 317 318 319 320 321 322 323 324 325 326 327 328329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345346 347 348 349 350 351 352 353 354 355356357 - name: Stop running containers358 if: always() 359 run: docker-compose -f ".docker/docker-compose-forkless.yml" -f ".docker/docker-compose.node.${{ matrix.network }}.yml" down --volumes360361 - name: Remove builder cache362 if: always() 363 run: |364 docker builder prune -f -a365 docker system prune -f366 docker image prune -f -a367368 - name: Remove repo at the end369 if: always() 370 run: |371 ls -ls ./