name: Check Runtimes Specs # This GH Workflow fetches the runtimes available in a release. # It then compares their metadata with reference specs located under # .github/runtime_specs. on: workflow_dispatch: inputs: release_id: description: | Release ID. You can find it using the command: curl -s \ -H "Authorization: Bearer ${GITHUB_TOKEN}" https://api.github.com/repos/paritytech/polkadot-sdk/releases | \ jq '.[] | { name: .name, id: .id }' required: true type: string # This trigger unfortunately does not work as expected. # https://github.com/orgs/community/discussions/47794 # release: # types: [edited] env: RUNTIME_SPECS_DIR: .github/runtime_specs DATA_DIR: runtimes RELEASE_ID: ${{ inputs.release_id }} REPO: ${{ github.repository }} jobs: find-specs: name: Fetch runtime specs outputs: specs: ${{ steps.get-list.outputs.specs }} runs-on: ubuntu-latest steps: - name: Checkout the repo uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Get list id: get-list run: | lst=$(ls $RUNTIME_SPECS_DIR/*.json | xargs -I{} basename "{}" .json | jq -R .| jq -sc .) echo "Found: $lst" echo "specs=$lst" >> $GITHUB_OUTPUT check-runtimes: name: Check runtime specs runs-on: ubuntu-latest needs: - find-specs strategy: matrix: specs: ${{ fromJSON(needs.find-specs.outputs.specs) }} steps: - name: Checkout the repo uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Fetch release artifacts based on release id env: OUTPUT_DIR: ${{ env.DATA_DIR }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | . ./.github/scripts/common/lib.sh fetch_release_artifacts - name: Install tooling env: SUBWASM_VERSION: v0.20.0 DL_BASE_URL: https://github.com/chevdor/subwasm/releases/download run: | wget $DL_BASE_URL/$SUBWASM_VERSION/subwasm_linux_amd64_$SUBWASM_VERSION.deb \ -O subwasm.deb sudo dpkg -i subwasm.deb subwasm --version - name: Extract metadata JSON for ${{ matrix.specs }} env: RUNTIME: ${{ matrix.specs }} run: | WASM=$(ls ${DATA_DIR}/${RUNTIME}*.wasm) echo "WASM=$WASM" subwasm show --json "$WASM" > "${DATA_DIR}/${RUNTIME}.json" - name: Check specs for ${{ matrix.specs }} id: build env: RUNTIME: ${{ matrix.specs }} LOGLEVEL: info run: | python --version .github/scripts/check-runtime.py "${DATA_DIR}/${RUNTIME}.json" "${RUNTIME_SPECS_DIR}/${RUNTIME}.json"