-
Notifications
You must be signed in to change notification settings - Fork 744
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This PR introduces the `srtool` GHA which was used in the old `cumulus` repo to build and check runtimes on the weekly basis schedule. The job is triggered: - every Monday at 2AM, automatically - on each tag push or push to the release branch - can be triggered manually as well Addresses #1271
- Loading branch information
1 parent
5ce0451
commit 8efaabd
Showing
2 changed files
with
172 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
name: Srtool build | ||
|
||
env: | ||
SUBWASM_VERSION: 0.20.0 | ||
TOML_CLI_VERSION: 0.2.4 | ||
|
||
on: | ||
push: | ||
tags: | ||
- "*" | ||
branches: | ||
- release-v[0-9]+.[0-9]+.[0-9]+* | ||
- release-cumulus-v[0-9]+* | ||
- release-polkadot-v[0-9]+* | ||
|
||
schedule: | ||
- cron: "00 02 * * 1" # 2AM weekly on monday | ||
|
||
workflow_dispatch: | ||
|
||
jobs: | ||
find-runtimes: | ||
name: Scan repo paritytech/polkadot-sdk | ||
outputs: | ||
runtime: ${{ steps.get_runtimes_list.outputs.runtime }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Install tooling | ||
run: | | ||
URL=https://github.com/chevdor/toml-cli/releases/download/v${{ env.TOML_CLI_VERSION }}/toml_linux_amd64_v${{ env.TOML_CLI_VERSION }}.deb | ||
curl -L $URL --output toml.deb | ||
sudo dpkg -i toml.deb | ||
toml --version; jq --version | ||
- name: Scan runtimes | ||
env: | ||
EXCLUDED_RUNTIMES: "substrate-test" | ||
run: | | ||
. ./.github/scripts/common/lib.sh | ||
echo "Github workspace: ${{ github.workspace }}" | ||
echo "Current folder: $(pwd)"; ls -al | ||
ls -al | ||
MATRIX=$(find_runtimes | tee runtimes_list.json) | ||
echo $MATRIX | ||
- name: Get runtimes list | ||
id: get_runtimes_list | ||
run: | | ||
ls -al | ||
MATRIX=$(cat runtimes_list.json) | ||
echo $MATRIX | ||
echo "runtime=$MATRIX" >> $GITHUB_OUTPUT | ||
srtool: | ||
runs-on: ubuntu-latest | ||
needs: | ||
- find-runtimes | ||
strategy: | ||
fail-fast: false | ||
matrix: ${{ fromJSON(needs.find-runtimes.outputs.runtime) }} | ||
|
||
steps: | ||
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Srtool build | ||
id: srtool_build | ||
uses: chevdor/srtool-actions@v0.9.1 | ||
with: | ||
chain: ${{ matrix.chain }} | ||
runtime_dir: ${{ matrix.runtime_dir }} | ||
|
||
- name: Summary | ||
run: | | ||
echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.chain }}-srtool-digest.json | ||
cat ${{ matrix.chain }}-srtool-digest.json | ||
echo "Compact Runtime: ${{ steps.srtool_build.outputs.wasm }}" | ||
echo "Compressed Runtime: ${{ steps.srtool_build.outputs.wasm_compressed }}" | ||
# it takes a while to build the runtime, so let's save the artifact as soon as we have it | ||
- name: Archive Artifacts for ${{ matrix.chain }} | ||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 | ||
with: | ||
name: ${{ matrix.chain }}-runtime | ||
path: | | ||
${{ steps.srtool_build.outputs.wasm }} | ||
${{ steps.srtool_build.outputs.wasm_compressed }} | ||
${{ matrix.chain }}-srtool-digest.json | ||
# We now get extra information thanks to subwasm | ||
- name: Install subwasm | ||
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: Show Runtime information | ||
shell: bash | ||
run: | | ||
subwasm info ${{ steps.srtool_build.outputs.wasm }} | ||
subwasm info ${{ steps.srtool_build.outputs.wasm_compressed }} | ||
subwasm --json info ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.chain }}-info.json | ||
subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.chain }}-compressed-info.json | ||
- name: Extract the metadata | ||
shell: bash | ||
run: | | ||
subwasm meta ${{ steps.srtool_build.outputs.wasm }} | ||
subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.chain }}-metadata.json | ||
- name: Check the metadata diff | ||
shell: bash | ||
# the following subwasm call will error for chains that are not known and/or live, that includes shell for instance | ||
run: | | ||
subwasm diff ${{ steps.srtool_build.outputs.wasm }} --chain-b ${{ matrix.chain }} || \ | ||
echo "Subwasm call failed, check the logs. This is likely because ${{ matrix.chain }} is not known by subwasm" | \ | ||
tee ${{ matrix.chain }}-diff.txt | ||
- name: Archive Subwasm results | ||
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 | ||
with: | ||
name: ${{ matrix.chain }}-runtime | ||
path: | | ||
${{ matrix.chain }}-info.json | ||
${{ matrix.chain }}-compressed-info.json | ||
${{ matrix.chain }}-metadata.json | ||
${{ matrix.chain }}-diff.txt |