[AHM] Make staking on AH work via XCM (#1006) #270
This file contains hidden or 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: Create Release | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| paths: [ "CHANGELOG.md" ] | |
| workflow_dispatch: | |
| jobs: | |
| collect-release-information: | |
| runs-on: self-hosted | |
| outputs: | |
| should-release: ${{ steps.run.outputs.should-release }} | |
| version: ${{ steps.run.outputs.version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - id: run | |
| run: | | |
| echo "should-release=$(.github/changelog-processor.py CHANGELOG.md --should-release)" >> $GITHUB_OUTPUT | |
| echo "version=$(.github/changelog-processor.py CHANGELOG.md --print-latest-version)" >> $GITHUB_OUTPUT | |
| cat $GITHUB_OUTPUT | |
| runtime-matrix: | |
| needs: [ collect-release-information ] | |
| if: needs.collect-release-information.outputs.should-release == '1' | |
| runs-on: self-hosted | |
| outputs: | |
| runtime: ${{ steps.runtime.outputs.runtime }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - id: runtime | |
| run: | | |
| TASKS=$(echo $(cat .github/workflows/runtimes-matrix.json) | sed 's/ //g' ) | |
| echo $TASKS | |
| echo "runtime=$TASKS" >> $GITHUB_OUTPUT | |
| build-runtimes: | |
| needs: [ runtime-matrix ] | |
| continue-on-error: true | |
| runs-on: self-hosted | |
| strategy: | |
| matrix: | |
| runtime: ${{ fromJSON(needs.runtime-matrix.outputs.runtime) }} | |
| env: | |
| PROD_FEATURES: "--features on-chain-release-build" | |
| TRY_RUNTIME_LOGGING_FEATURES: "--features try-runtime,metadata-hash" | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Cache target dir | |
| uses: actions/cache@v4 | |
| with: | |
| path: "${{ github.workspace }}/${{ matrix.runtime.path }}/target" | |
| key: srtool-target-${{ matrix.runtime.path }}-${{ matrix.runtime.name }}-${{ github.sha }} | |
| restore-keys: | | |
| srtool-target-${{ matrix.runtime.path }}-${{ matrix.runtime.name }}- | |
| srtool-target-${{ matrix.runtime.path }}- | |
| - name: Build ${{ matrix.runtime.name }} | |
| id: srtool_build | |
| uses: paritytech/srtool-actions@v0.9.4 | |
| env: | |
| BUILD_OPTS: ${{ env.PROD_FEATURES }} | |
| with: | |
| chain: ${{ matrix.runtime.name }} | |
| package: ${{ matrix.runtime.package }} | |
| runtime_dir: ${{ matrix.runtime.path }} | |
| profile: "production" | |
| - name: Store ${{ matrix.runtime.name }} srtool digest to disk | |
| run: | | |
| echo '${{ steps.srtool_build.outputs.json }}' | jq > ${{ matrix.runtime.name }}_srtool_output.json | |
| - name: Upload ${{ matrix.runtime.name }} srtool json | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.runtime.name }}-srtool-json | |
| path: ${{ matrix.runtime.name }}_srtool_output.json | |
| - name: Upload ${{ matrix.runtime.name }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.runtime.name }} | |
| path: | | |
| ${{ steps.srtool_build.outputs.wasm_compressed }} | |
| - name: Build ${{ matrix.runtime.name }} (try-runtime & logging) | |
| id: srtool_compact | |
| uses: paritytech/srtool-actions@v0.9.4 | |
| env: | |
| BUILD_OPTS: ${{ env.TRY_RUNTIME_LOGGING_FEATURES }} | |
| with: | |
| chain: ${{ matrix.runtime.name }} | |
| package: ${{ matrix.runtime.package }} | |
| runtime_dir: ${{ matrix.runtime.path }} | |
| profile: "release" | |
| - name: Upload ${{ matrix.runtime.name }} Wasm (try-runtime & logging) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.runtime.name }}-compact | |
| path: ${{ steps.srtool_compact.outputs.wasm_compressed }} | |
| publish-release: | |
| runs-on: self-hosted | |
| needs: [ build-runtimes, collect-release-information ] | |
| outputs: | |
| release_url: ${{ steps.create-release.outputs.html_url }} | |
| asset_upload_url: ${{ steps.create-release.outputs.upload_url }} | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Download srtool json output | |
| uses: actions/download-artifact@v4 | |
| - name: Archive context output | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: release-notes-context | |
| path: | | |
| **/*_srtool_output.json | |
| - name: Add runtime info to changelog | |
| run: | | |
| CONTEXT=$(find . -name '*_srtool_output.json') | |
| SRTOOL() { <$(<<<$CONTEXT head -n1) jq -r .$1; } | |
| WASM() { <${JSON} jq -r ".runtimes.compressed.subwasm.$1"; } | |
| # Copy the relevant parts of the changelog | |
| .github/changelog-processor.py CHANGELOG.md --print-changelog-from-last-release > DRAFT | |
| tee -a DRAFT <<-EOF | |
| # Runtime info | |
| *These runtimes were built with **$(SRTOOL rustc)** using **[$(SRTOOL gen)](https://github.com/paritytech/srtool)*** | |
| To replicate the build, use the following command: | |
| \`\`\`sh | |
| srtool build | |
| --root --profile production | |
| --package CRATE_NAME --runtime-dir PATH_TO_CRATE | |
| --build-opts="$PROD_FEATURES" | |
| \`\`\` | |
| EOF | |
| for JSON in $(<<<$CONTEXT sort -sr) | |
| do | |
| SPEC_NAME=$(WASM 'core_version.specName') | |
| # Check for spec names and adjust the heading accordingly | |
| if [[ "$SPEC_NAME" == "statemint" ]]; then | |
| HEADING="Asset Hub Polkadot (previously Statemint)" | |
| elif [[ "$SPEC_NAME" == "statemine" ]]; then | |
| HEADING="Asset Hub Kusama (previously Statemine)" | |
| else | |
| HEADING=$(WASM 'core_version.specName / "-" | map(. / "" | first |= ascii_upcase | add) | join(" ")') | |
| fi | |
| tee -a DRAFT <<-EOF | |
| ## $HEADING | |
| ~~~ | |
| 🏋️ Runtime Size: $(numfmt --to iec-i --format "%.2f" $(WASM size)) ($(WASM size) bytes) | |
| 🗜 Compressed: $(WASM 'compression | if .compressed then "Yes: \(1 - .size_compressed / .size_decompressed | . * 10000 | round / 100)%" else "No" end') | |
| 🔥 Core Version: $(WASM 'core_version | "\(.specName)-\(.specVersion) \(.implName)-\(.implVersion).tx\(.transactionVersion).au\(.authoringVersion)"') | |
| 🎁 Metadata version: V$(WASM metadata_version) | |
| 🗳️ Blake2-256 hash: $(WASM blake2_256) | |
| 📦 IPFS: $(WASM ipfs_hash) | |
| ~~~ | |
| EOF | |
| done | |
| - name: Create release | |
| id: create-release | |
| # TODO: Replace as it has been deprecated | |
| uses: actions/create-release@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: ${{ format('v{0}', needs.collect-release-information.outputs.version) }} | |
| release_name: Runtimes ${{ needs.collect-release-information.outputs.version }} | |
| body_path: DRAFT | |
| draft: false | |
| publish-runtimes: | |
| needs: [ runtime-matrix, publish-release ] | |
| continue-on-error: true | |
| runs-on: self-hosted | |
| env: | |
| RUNTIME_DIR: runtime | |
| strategy: | |
| matrix: | |
| runtime: ${{ fromJSON(needs.runtime-matrix.outputs.runtime) }} | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Get runtime info | |
| env: | |
| JSON: release-notes-context/${{ matrix.runtime.name }}-srtool-json/${{ matrix.runtime.name }}_srtool_output.json | |
| run: | | |
| >>$GITHUB_ENV echo ASSET=$(find ${{ matrix.runtime.name }} -name '*.compact.compressed.wasm') | |
| >>$GITHUB_ENV echo SPEC=$(<${JSON} jq -r .runtimes.compact.subwasm.core_version.specVersion) | |
| - name: Upload compressed ${{ matrix.runtime.name }} v${{ env.SPEC }} wasm | |
| # TODO: Replace as it has been deprecated | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| upload_url: ${{ needs.publish-release.outputs.asset_upload_url }} | |
| asset_path: ${{ env.ASSET }} | |
| asset_name: ${{ matrix.runtime.name }}_runtime-v${{ env.SPEC }}.compact.compressed.wasm | |
| asset_content_type: application/wasm | |
| package-try-runtime-and-logging-enabled-wasms: | |
| needs: [ build-runtimes, publish-release ] | |
| runs-on: self-hosted | |
| steps: | |
| - name: Download compact artfacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: '*-compact' | |
| - name: Create try-runtime and logging enabled runtimes | |
| run: | | |
| zip -j runtimes-with-try-runtime-and-logging.zip */*.compact.compressed.wasm | |
| - name: Upload archive to GitHub Release | |
| uses: actions/upload-release-asset@v1 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| upload_url: ${{ needs.publish-release.outputs.asset_upload_url }} | |
| asset_path: runtimes-with-try-runtime-and-logging.zip | |
| asset_name: runtimes-with-try-runtime-and-logging.zip | |
| asset_content_type: application/zip |