-
Notifications
You must be signed in to change notification settings - Fork 20
136 lines (119 loc) · 4.01 KB
/
check-runtime-upgrade.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Check runtime upgrade
# Check runtime upgradability of the released runtime.
# We do it in two ways:
# - by executing try-runtime-cli against the live chain
# - by simulating a runtime upgrade against the live chain
on:
release:
types: [released]
workflow_dispatch:
inputs:
release_tag:
description: runtime.wasm release_tag
required: false
env:
SUBWASM_VERSION: 0.19.1
RELEASE_TAG: ${{ github.event.inputs.release_tag || github.event.release.tag_name }}
jobs:
check-condition:
runs-on: ubuntu-latest
outputs:
skip_simulation: ${{ steps.check.outputs.skip_simulation }}
steps:
- uses: actions/checkout@v4
- id: check
run: |
if [ -z "${{ env.RELEASE_TAG }}" ]; then
skip_simulation=true
else
skip_simulation=false
fi
echo "skip_simulation=$skip_simulation" | tee -a $GITHUB_OUTPUT
runtime-matrix:
runs-on: ubuntu-latest
outputs:
runtime: ${{ steps.runtime.outputs.runtime }}
name: Parse runtime matrix
steps:
- uses: actions/checkout@v4
- id: runtime
run: |
TASKS=$(jq '[.[] | select(.uri != null)]' .github/runtime.json)
SKIPPED_TASKS=$(jq '[.[] | select(.uri == null)]' .github/runtime.json)
echo --- Running the following tasks ---
echo $TASKS
echo --- Skipping the following tasks due to not having a uri field ---
echo $SKIPPED_TASKS
TASKS=$(echo $TASKS | jq -c .)
echo "runtime=$TASKS" >> $GITHUB_OUTPUT
simulate-runtime-upgrade:
runs-on: ubuntu-latest
needs:
- check-condition
- runtime-matrix
if: needs.check-condition.outputs.skip_simulation == 'false'
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
runtime: ${{ fromJSON(needs.runtime-matrix.outputs.runtime) }}
name: ${{ matrix.runtime.name }}
steps:
- name: Checkout codes on ${{ github.ref }}
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Enable corepack and pnpm
run: corepack enable && corepack enable pnpm
- name: Fork ${{ matrix.runtime.name }} and launch parachain
timeout-minutes: 20
run: |
./scripts/fork-parachain-and-launch.sh ${{ matrix.runtime.name }}
- name: Install subwasm ${{ env.SUBWASM_VERSION }}
run: |
wget https://github.com/chevdor/subwasm/releases/download/v${{ env.SUBWASM_VERSION }}/subwasm_linux_amd64_v${{ env.SUBWASM_VERSION }}.deb
sudo dpkg -i subwasm_linux_amd64_v${{ env.SUBWASM_VERSION }}.deb
subwasm --version
- name: Test runtime upgrade
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
timeout-minutes: 10
run: |
./scripts/runtime-upgrade.sh ${{ matrix.runtime.name }}-parachain-runtime.compact.compressed.wasm ${{ env.RELEASE_TAG }}
- name: Collect docker logs if test fails
continue-on-error: true
uses: jwalton/gh-docker-logs@v2
if: failure()
with:
tail: all
dest: docker-logs
- name: Upload docker logs if test fails
uses: actions/upload-artifact@v4
if: failure()
with:
name: ${{ matrix.runtime.name }}-docker-logs
path: docker-logs
if-no-files-found: ignore
retention-days: 3
try-runtime:
runs-on: ubuntu-latest
needs:
- check-condition
- runtime-matrix
strategy:
fail-fast: false
matrix:
runtime: ${{ fromJSON(needs.runtime-matrix.outputs.runtime) }}
name: ${{ matrix.runtime.name }}
steps:
- name: Checkout codes on ${{ github.ref }}
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run ${{ matrix.runtime.name }} try-runtime check
uses: paritytech/try-runtime-gha@v0.2.0
with:
runtime-package: ${{ matrix.runtime.package }}
node-uri: ${{ matrix.runtime.uri }}
checks: "all"
extra-args: ""