Srtool build #16
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
name: Srtool build | |
env: | |
SUBWASM_VERSION: 0.20.0 | |
TOML_CLI_VERSION: 0.2.4 | |
on: | |
workflow_call: | |
inputs: | |
excluded_runtimes: | |
type: string | |
build_opts: | |
type: string | |
outputs: | |
published_runtimes: | |
value: ${{ jobs.find-runtimes.outputs.runtime }} | |
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@692973e3d937129bcbf40652eb9f2f61becf3332 # 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: ${{ inputs.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@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.0.0 | |
with: | |
fetch-depth: 0 | |
- name: Srtool build | |
id: srtool_build | |
uses: chevdor/[email protected] | |
env: | |
BUILD_OPTS: ${{ inputs.build_opts }} | |
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 }}" | |
# 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@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | |
with: | |
name: ${{ matrix.chain }}-runtime | |
path: | | |
${{ matrix.chain }}-info.json | |
${{ matrix.chain }}-compressed-info.json | |
${{ matrix.chain }}-metadata.json | |
${{ matrix.chain }}-diff.txt | |
${{ steps.srtool_build.outputs.wasm }} | |
${{ steps.srtool_build.outputs.wasm_compressed }} | |
${{ matrix.chain }}-srtool-digest.json |