From 7a47a5995c53144fc015aa0add6b08b27fb544b6 Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 12:51:57 +0200 Subject: [PATCH 01/18] ci: deterministic build --- .github/workflows/release.yml | 102 +++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 48ef8771..63e16011 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,5 +1,8 @@ name: pop release +env: + SUBWASM_VERSION: 0.18.0 + on: release: types: [ published ] @@ -10,6 +13,103 @@ on: required: false jobs: + srtool: + runs-on: ubuntu-latest + permissions: + contents: write + strategy: + matrix: + runtime: [ "devnet", "testnet" ] + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Cache runtime target dir + uses: actions/cache@v4 + with: + path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" + key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} + restore-keys: | + srtool-target-${{ matrix.runtime }}- + srtool-target- + + - name: Build ${{ matrix.runtime }} runtime + id: srtool_build + uses: chevdor/srtool-actions@v0.9.2 + env: + BUILD_OPTS: "--features on-chain-release-build" + with: + chain: ${{ matrix.runtime }} + + - name: Store srtool digest to disk + run: | + echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json + + # Manual trigger: add artifacts to run + - name: Copy artifacts + if: github.event_name != 'release' + run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ + + - name: Archive Runtime + if: github.event_name != 'release' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.runtime }}-runtime-${{ github.sha }} + path: | + ${{ matrix.chain }}*.wasm + ${{ matrix.runtime }}-srtool-digest.json + + # We now get extra information thanks to subwasm, + - 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: Show Runtime information + 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.runtime }}-info.json + subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json + + - name: Extract the metadata + run: | + subwasm meta ${{ steps.srtool_build.outputs.wasm }} + subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json + + - name: Archive Subwasm results + if: github.event_name != 'release' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.runtime }}-info + path: | + ${{ matrix.runtime }}-info.json + ${{ matrix.runtime }}-info_compressed.json + ${{ matrix.runtime }}-metadata.json + ${{ matrix.runtime }}-diff.txt + + # Release published: add artifacts to release + - name: Add artifacts to release + if: github.event_name == 'release' + uses: softprops/action-gh-release@v1 + with: + append_body: true + body: | + ## Runtime: `${{ matrix.runtime }}` + ``` + 🏋️ Runtime Size: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.size }} bytes + 🔥 Core Version: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specName }}-${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specVersion }} + 🎁 Metadata version: V${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.metadata_version }} + 🗳️ system.setCode hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.proposal_hash }} + 🗳️ authorizeUpgrade hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.parachain_authorize_upgrade_hash }} + 🗳️ Blake2-256 hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.blake2_256 }} + 📦 IPFS: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.ipfs_hash }} + ``` + files: | + ${{ steps.srtool_build.outputs.wasm_compressed }} + ${{ matrix.runtime }}-srtool-digest.json + build-node: runs-on: ${{ matrix.platform.os }} permissions: @@ -84,4 +184,4 @@ jobs: uses: softprops/action-gh-release@v1 with: files: | - ${{ env.path }}/${{ env.package }} \ No newline at end of file + ${{ env.path }}/${{ env.package }} From 22427f504ab991852d7a955e619c0eea0ba51029 Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 13:39:42 +0200 Subject: [PATCH 02/18] fix: ci deterministic build runtime names --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 63e16011..59af0763 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: contents: write strategy: matrix: - runtime: [ "devnet", "testnet" ] + runtime: [ "pop-runtime-devnet", "pop-runtime-testnet" ] steps: - name: Checkout sources uses: actions/checkout@v4 From 4e64dbde55717b70ccda66ca2354a1e0d9ad3a21 Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 13:53:23 +0200 Subject: [PATCH 03/18] refactor: separate ci scripts --- .github/workflows/deterministic-build.yml | 104 ++++++++++++++++++++++ .github/workflows/release.yml | 100 --------------------- 2 files changed, 104 insertions(+), 100 deletions(-) create mode 100644 .github/workflows/deterministic-build.yml diff --git a/.github/workflows/deterministic-build.yml b/.github/workflows/deterministic-build.yml new file mode 100644 index 00000000..6730ce16 --- /dev/null +++ b/.github/workflows/deterministic-build.yml @@ -0,0 +1,104 @@ +name: Build Deterministic Runtimes + +env: + SUBWASM_VERSION: 0.18.0 + +on: + release: + types: [ published ] + workflow_dispatch: + +jobs: + srtool: + runs-on: ubuntu-latest + permissions: + contents: write + strategy: + matrix: + runtime: [ "devnet", "testnet" ] + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Cache runtime target dir + uses: actions/cache@v4 + with: + path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" + key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} + restore-keys: | + srtool-target-${{ matrix.runtime }}- + srtool-target- + + - name: Build ${{ matrix.runtime }} runtime + id: srtool_build + uses: chevdor/srtool-actions@v0.9.2 + env: + BUILD_OPTS: "--features on-chain-release-build" + with: + chain: ${{ matrix.runtime }} + + - name: Store srtool digest to disk + run: | + echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json + + # Manual trigger: add artifacts to run + - name: Copy artifacts + if: github.event_name != 'release' + run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ + - name: Archive Runtime + if: github.event_name != 'release' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.runtime }}-runtime-${{ github.sha }} + path: | + ${{ matrix.chain }}*.wasm + ${{ matrix.runtime }}-srtool-digest.json + + # We now get extra information thanks to subwasm, + - 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: Show Runtime information + 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.runtime }}-info.json + subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json + - name: Extract the metadata + run: | + subwasm meta ${{ steps.srtool_build.outputs.wasm }} + subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json + + - name: Archive Subwasm results + if: github.event_name != 'release' + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: ${{ matrix.runtime }}-info + path: | + ${{ matrix.runtime }}-info.json + ${{ matrix.runtime }}-info_compressed.json + ${{ matrix.runtime }}-metadata.json + ${{ matrix.runtime }}-diff.txt + + # Release published: add artifacts to release + - name: Add artifacts to release + if: github.event_name == 'release' + uses: softprops/action-gh-release@v1 + with: + append_body: true + body: | + ## Runtime: `${{ matrix.runtime }}` + ``` + 🏋️ Runtime Size: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.size }} bytes + 🔥 Core Version: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specName }}-${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specVersion }} + 🎁 Metadata version: V${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.metadata_version }} + 🗳️ system.setCode hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.proposal_hash }} + 🗳️ authorizeUpgrade hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.parachain_authorize_upgrade_hash }} + 🗳️ Blake2-256 hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.blake2_256 }} + 📦 IPFS: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.ipfs_hash }} + ``` + files: | + ${{ steps.srtool_build.outputs.wasm_compressed }} + ${{ matrix.runtime }}-srtool-digest.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59af0763..cdc6050f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,5 @@ name: pop release -env: - SUBWASM_VERSION: 0.18.0 - on: release: types: [ published ] @@ -13,103 +10,6 @@ on: required: false jobs: - srtool: - runs-on: ubuntu-latest - permissions: - contents: write - strategy: - matrix: - runtime: [ "pop-runtime-devnet", "pop-runtime-testnet" ] - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Cache runtime target dir - uses: actions/cache@v4 - with: - path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" - key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} - restore-keys: | - srtool-target-${{ matrix.runtime }}- - srtool-target- - - - name: Build ${{ matrix.runtime }} runtime - id: srtool_build - uses: chevdor/srtool-actions@v0.9.2 - env: - BUILD_OPTS: "--features on-chain-release-build" - with: - chain: ${{ matrix.runtime }} - - - name: Store srtool digest to disk - run: | - echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json - - # Manual trigger: add artifacts to run - - name: Copy artifacts - if: github.event_name != 'release' - run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ - - - name: Archive Runtime - if: github.event_name != 'release' - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.runtime }}-runtime-${{ github.sha }} - path: | - ${{ matrix.chain }}*.wasm - ${{ matrix.runtime }}-srtool-digest.json - - # We now get extra information thanks to subwasm, - - 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: Show Runtime information - 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.runtime }}-info.json - subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json - - - name: Extract the metadata - run: | - subwasm meta ${{ steps.srtool_build.outputs.wasm }} - subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json - - - name: Archive Subwasm results - if: github.event_name != 'release' - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.runtime }}-info - path: | - ${{ matrix.runtime }}-info.json - ${{ matrix.runtime }}-info_compressed.json - ${{ matrix.runtime }}-metadata.json - ${{ matrix.runtime }}-diff.txt - - # Release published: add artifacts to release - - name: Add artifacts to release - if: github.event_name == 'release' - uses: softprops/action-gh-release@v1 - with: - append_body: true - body: | - ## Runtime: `${{ matrix.runtime }}` - ``` - 🏋️ Runtime Size: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.size }} bytes - 🔥 Core Version: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specName }}-${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specVersion }} - 🎁 Metadata version: V${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.metadata_version }} - 🗳️ system.setCode hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.proposal_hash }} - 🗳️ authorizeUpgrade hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.parachain_authorize_upgrade_hash }} - 🗳️ Blake2-256 hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.blake2_256 }} - 📦 IPFS: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.ipfs_hash }} - ``` - files: | - ${{ steps.srtool_build.outputs.wasm_compressed }} - ${{ matrix.runtime }}-srtool-digest.json - build-node: runs-on: ${{ matrix.platform.os }} permissions: From 2d89ec2c50f9bcd436a578c72734e2f925cc633c Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 13:58:01 +0200 Subject: [PATCH 04/18] fix: deterministic build --- .github/workflows/deterministic-build.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deterministic-build.yml b/.github/workflows/deterministic-build.yml index 6730ce16..3d2991b6 100644 --- a/.github/workflows/deterministic-build.yml +++ b/.github/workflows/deterministic-build.yml @@ -33,9 +33,10 @@ jobs: id: srtool_build uses: chevdor/srtool-actions@v0.9.2 env: - BUILD_OPTS: "--features on-chain-release-build" + BUILD_OPTS: "--features on-chain-release-build -p pop-runtime-${{ matrix.runtime }}" with: chain: ${{ matrix.runtime }} + path: "runtime/${{ matrix.runtime }}" - name: Store srtool digest to disk run: | @@ -45,6 +46,7 @@ jobs: - name: Copy artifacts if: github.event_name != 'release' run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ + - name: Archive Runtime if: github.event_name != 'release' uses: actions/upload-artifact@v4 @@ -60,12 +62,14 @@ jobs: 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 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.runtime }}-info.json subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json + - name: Extract the metadata run: | subwasm meta ${{ steps.srtool_build.outputs.wasm }} @@ -73,7 +77,7 @@ jobs: - name: Archive Subwasm results if: github.event_name != 'release' - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.runtime }}-info path: | From a052bd11aae854789de00f838962fc6c221ad216 Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 14:14:18 +0200 Subject: [PATCH 05/18] revert --- .github/workflows/deterministic-build.yml | 108 ---------------------- .github/workflows/release.yml | 101 ++++++++++++++++++++ 2 files changed, 101 insertions(+), 108 deletions(-) delete mode 100644 .github/workflows/deterministic-build.yml diff --git a/.github/workflows/deterministic-build.yml b/.github/workflows/deterministic-build.yml deleted file mode 100644 index 3d2991b6..00000000 --- a/.github/workflows/deterministic-build.yml +++ /dev/null @@ -1,108 +0,0 @@ -name: Build Deterministic Runtimes - -env: - SUBWASM_VERSION: 0.18.0 - -on: - release: - types: [ published ] - workflow_dispatch: - -jobs: - srtool: - runs-on: ubuntu-latest - permissions: - contents: write - strategy: - matrix: - runtime: [ "devnet", "testnet" ] - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Cache runtime target dir - uses: actions/cache@v4 - with: - path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" - key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} - restore-keys: | - srtool-target-${{ matrix.runtime }}- - srtool-target- - - - name: Build ${{ matrix.runtime }} runtime - id: srtool_build - uses: chevdor/srtool-actions@v0.9.2 - env: - BUILD_OPTS: "--features on-chain-release-build -p pop-runtime-${{ matrix.runtime }}" - with: - chain: ${{ matrix.runtime }} - path: "runtime/${{ matrix.runtime }}" - - - name: Store srtool digest to disk - run: | - echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json - - # Manual trigger: add artifacts to run - - name: Copy artifacts - if: github.event_name != 'release' - run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ - - - name: Archive Runtime - if: github.event_name != 'release' - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.runtime }}-runtime-${{ github.sha }} - path: | - ${{ matrix.chain }}*.wasm - ${{ matrix.runtime }}-srtool-digest.json - - # We now get extra information thanks to subwasm, - - 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: Show Runtime information - 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.runtime }}-info.json - subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json - - - name: Extract the metadata - run: | - subwasm meta ${{ steps.srtool_build.outputs.wasm }} - subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json - - - name: Archive Subwasm results - if: github.event_name != 'release' - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.runtime }}-info - path: | - ${{ matrix.runtime }}-info.json - ${{ matrix.runtime }}-info_compressed.json - ${{ matrix.runtime }}-metadata.json - ${{ matrix.runtime }}-diff.txt - - # Release published: add artifacts to release - - name: Add artifacts to release - if: github.event_name == 'release' - uses: softprops/action-gh-release@v1 - with: - append_body: true - body: | - ## Runtime: `${{ matrix.runtime }}` - ``` - 🏋️ Runtime Size: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.size }} bytes - 🔥 Core Version: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specName }}-${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specVersion }} - 🎁 Metadata version: V${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.metadata_version }} - 🗳️ system.setCode hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.proposal_hash }} - 🗳️ authorizeUpgrade hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.parachain_authorize_upgrade_hash }} - 🗳️ Blake2-256 hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.blake2_256 }} - 📦 IPFS: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.ipfs_hash }} - ``` - files: | - ${{ steps.srtool_build.outputs.wasm_compressed }} - ${{ matrix.runtime }}-srtool-digest.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cdc6050f..c691762e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,5 +1,8 @@ name: pop release +env: + SUBWASM_VERSION: 0.18.0 + on: release: types: [ published ] @@ -10,6 +13,104 @@ on: required: false jobs: + srtool: + runs-on: ubuntu-latest + permissions: + contents: write + strategy: + matrix: + runtime: [ "devnet", "testnet" ] + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Cache runtime target dir + uses: actions/cache@v4 + with: + path: "${{ github.workspace }}/runtime/${{ matrix.runtime }}/target" + key: srtool-target-${{ matrix.runtime }}-${{ github.sha }} + restore-keys: | + srtool-target-${{ matrix.runtime }}- + srtool-target- + + - name: Build ${{ matrix.runtime }} runtime + id: srtool_build + uses: chevdor/srtool-actions@v0.9.2 + env: + BUILD_OPTS: "--features on-chain-release-build -p pop-runtime-${{ matrix.runtime }}" + with: + chain: ${{ matrix.runtime }} + path: "runtime/${{ matrix.runtime }}" + + - name: Store srtool digest to disk + run: | + echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json + + # Manual trigger: add artifacts to run + - name: Copy artifacts + if: github.event_name != 'release' + run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ + + - name: Archive Runtime + if: github.event_name != 'release' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.runtime }}-runtime-${{ github.sha }} + path: | + ${{ matrix.chain }}*.wasm + ${{ matrix.runtime }}-srtool-digest.json + + # We now get extra information thanks to subwasm, + - 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: Show Runtime information + 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.runtime }}-info.json + subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json + + - name: Extract the metadata + run: | + subwasm meta ${{ steps.srtool_build.outputs.wasm }} + subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json + + - name: Archive Subwasm results + if: github.event_name != 'release' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.runtime }}-info + path: | + ${{ matrix.runtime }}-info.json + ${{ matrix.runtime }}-info_compressed.json + ${{ matrix.runtime }}-metadata.json + ${{ matrix.runtime }}-diff.txt + + # Release published: add artifacts to release + - name: Add artifacts to release + if: github.event_name == 'release' + uses: softprops/action-gh-release@v1 + with: + append_body: true + body: | + ## Runtime: `${{ matrix.runtime }}` + ``` + 🏋️ Runtime Size: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.size }} bytes + 🔥 Core Version: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specName }}-${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.core_version.specVersion }} + 🎁 Metadata version: V${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.metadata_version }} + 🗳️ system.setCode hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.proposal_hash }} + 🗳️ authorizeUpgrade hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.parachain_authorize_upgrade_hash }} + 🗳️ Blake2-256 hash: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.blake2_256 }} + 📦 IPFS: ${{ fromJSON(steps.srtool_build.outputs.json).runtimes.compressed.subwasm.ipfs_hash }} + ``` + files: | + ${{ steps.srtool_build.outputs.wasm_compressed }} + ${{ matrix.runtime }}-srtool-digest.json + build-node: runs-on: ${{ matrix.platform.os }} permissions: From 3588cda9bc8a1e4a253b4035702a446583749d76 Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 14:18:20 +0200 Subject: [PATCH 06/18] fix --- .github/workflows/release.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c691762e..3de891eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,5 @@ name: pop release -env: - SUBWASM_VERSION: 0.18.0 - on: release: types: [ published ] @@ -13,7 +10,7 @@ on: required: false jobs: - srtool: + srtool: runs-on: ubuntu-latest permissions: contents: write @@ -32,7 +29,6 @@ jobs: restore-keys: | srtool-target-${{ matrix.runtime }}- srtool-target- - - name: Build ${{ matrix.runtime }} runtime id: srtool_build uses: chevdor/srtool-actions@v0.9.2 @@ -45,7 +41,6 @@ jobs: - name: Store srtool digest to disk run: | echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json - # Manual trigger: add artifacts to run - name: Copy artifacts if: github.event_name != 'release' @@ -59,26 +54,22 @@ jobs: path: | ${{ matrix.chain }}*.wasm ${{ matrix.runtime }}-srtool-digest.json - # We now get extra information thanks to subwasm, - 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: Show Runtime information 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.runtime }}-info.json subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json - - name: Extract the metadata run: | subwasm meta ${{ steps.srtool_build.outputs.wasm }} subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json - - name: Archive Subwasm results if: github.event_name != 'release' uses: actions/upload-artifact@v4 @@ -89,7 +80,6 @@ jobs: ${{ matrix.runtime }}-info_compressed.json ${{ matrix.runtime }}-metadata.json ${{ matrix.runtime }}-diff.txt - # Release published: add artifacts to release - name: Add artifacts to release if: github.event_name == 'release' From 54afa212f2698e70a9af788511aa3938f7601f90 Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 14:25:21 +0200 Subject: [PATCH 07/18] fix: ci finding runtime package --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3de891eb..da2b4636 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: env: BUILD_OPTS: "--features on-chain-release-build -p pop-runtime-${{ matrix.runtime }}" with: - chain: ${{ matrix.runtime }} + chain: "pop-runtime-${{ matrix.runtime }}" path: "runtime/${{ matrix.runtime }}" - name: Store srtool digest to disk From 65430359c0b722fc1f03609e5080b4cb8c2db8da Mon Sep 17 00:00:00 2001 From: Daanvdplas Date: Mon, 29 Jul 2024 14:39:36 +0200 Subject: [PATCH 08/18] fix --- .github/workflows/release.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index da2b4636..03a76cc3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,5 +1,8 @@ name: pop release +env: + SUBWASM_VERSION: 0.18.0 + on: release: types: [ published ] @@ -29,18 +32,20 @@ jobs: restore-keys: | srtool-target-${{ matrix.runtime }}- srtool-target- + - name: Build ${{ matrix.runtime }} runtime id: srtool_build uses: chevdor/srtool-actions@v0.9.2 env: BUILD_OPTS: "--features on-chain-release-build -p pop-runtime-${{ matrix.runtime }}" with: - chain: "pop-runtime-${{ matrix.runtime }}" + chain: ${{ matrix.runtime }} path: "runtime/${{ matrix.runtime }}" - name: Store srtool digest to disk run: | echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json + # Manual trigger: add artifacts to run - name: Copy artifacts if: github.event_name != 'release' @@ -52,24 +57,28 @@ jobs: with: name: ${{ matrix.runtime }}-runtime-${{ github.sha }} path: | - ${{ matrix.chain }}*.wasm + ${{ matrix.runtime }}*.wasm ${{ matrix.runtime }}-srtool-digest.json + # We now get extra information thanks to subwasm, - 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: Show Runtime information 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.runtime }}-info.json subwasm --json info ${{ steps.srtool_build.outputs.wasm_compressed }} > ${{ matrix.runtime }}-info_compressed.json + - name: Extract the metadata run: | subwasm meta ${{ steps.srtool_build.outputs.wasm }} subwasm --json meta ${{ steps.srtool_build.outputs.wasm }} > ${{ matrix.runtime }}-metadata.json + - name: Archive Subwasm results if: github.event_name != 'release' uses: actions/upload-artifact@v4 @@ -79,7 +88,7 @@ jobs: ${{ matrix.runtime }}-info.json ${{ matrix.runtime }}-info_compressed.json ${{ matrix.runtime }}-metadata.json - ${{ matrix.runtime }}-diff.txt + # Release published: add artifacts to release - name: Add artifacts to release if: github.event_name == 'release' @@ -100,7 +109,6 @@ jobs: files: | ${{ steps.srtool_build.outputs.wasm_compressed }} ${{ matrix.runtime }}-srtool-digest.json - build-node: runs-on: ${{ matrix.platform.os }} permissions: From a2a5b36951518a0f49335c407cf0ac0ef6e64ae8 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Thu, 1 Aug 2024 22:16:54 +0100 Subject: [PATCH 09/18] ci(runtime): adjust srtool parameters --- .github/workflows/release.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 03a76cc3..78a541f5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,10 +37,11 @@ jobs: id: srtool_build uses: chevdor/srtool-actions@v0.9.2 env: - BUILD_OPTS: "--features on-chain-release-build -p pop-runtime-${{ matrix.runtime }}" + BUILD_OPTS: "--features on-chain-release-build" with: chain: ${{ matrix.runtime }} - path: "runtime/${{ matrix.runtime }}" + package: "pop-runtime-${{ matrix.runtime }}" + runtime_dir: "runtime/${{ matrix.runtime }}" - name: Store srtool digest to disk run: | From da681bbb01f34a19afe3afc9b71ecafb1d3eb829 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Thu, 1 Aug 2024 22:55:35 +0100 Subject: [PATCH 10/18] ci(runtime): remove build opts --- .github/workflows/release.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78a541f5..6dd17f93 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,8 +36,6 @@ jobs: - name: Build ${{ matrix.runtime }} runtime id: srtool_build uses: chevdor/srtool-actions@v0.9.2 - env: - BUILD_OPTS: "--features on-chain-release-build" with: chain: ${{ matrix.runtime }} package: "pop-runtime-${{ matrix.runtime }}" From 03fa6060936da2e028a2566801c12206ca10b1bf Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Thu, 1 Aug 2024 23:26:20 +0100 Subject: [PATCH 11/18] ci(runtime): adjust archive outputs --- .github/workflows/release.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6dd17f93..38565100 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,17 +46,14 @@ jobs: echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json # Manual trigger: add artifacts to run - - name: Copy artifacts - if: github.event_name != 'release' - run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ - - name: Archive Runtime if: github.event_name != 'release' uses: actions/upload-artifact@v4 with: name: ${{ matrix.runtime }}-runtime-${{ github.sha }} path: | - ${{ matrix.runtime }}*.wasm + ${{ steps.srtool_build.outputs.wasm }} + ${{ steps.srtool_build.outputs.wasm_compressed }} ${{ matrix.runtime }}-srtool-digest.json # We now get extra information thanks to subwasm, From ec4deaeb478928784c2f1342c7277ca1bfff5d55 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Thu, 1 Aug 2024 23:36:16 +0100 Subject: [PATCH 12/18] ci(runtime): adjust archive outputs --- .github/workflows/release.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 38565100..b1437604 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,14 +46,17 @@ jobs: echo '${{ steps.srtool_build.outputs.json }}' | jq . > ${{ matrix.runtime }}-srtool-digest.json # Manual trigger: add artifacts to run + - name: Copy artifacts + if: github.event_name != 'release' + run: cp `dirname ${{ steps.srtool_build.outputs.wasm }}`/*.wasm ./ + - name: Archive Runtime if: github.event_name != 'release' uses: actions/upload-artifact@v4 with: name: ${{ matrix.runtime }}-runtime-${{ github.sha }} path: | - ${{ steps.srtool_build.outputs.wasm }} - ${{ steps.srtool_build.outputs.wasm_compressed }} + pop_runtime_${{ matrix.runtime }}*.wasm ${{ matrix.runtime }}-srtool-digest.json # We now get extra information thanks to subwasm, From dd4837560b6120e09af1e0a5ddc97e9a316c3845 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Thu, 1 Aug 2024 23:59:23 +0100 Subject: [PATCH 13/18] ci(runtime): add conditional jobs --- .github/workflows/release.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b1437604..285ebc03 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,10 +11,19 @@ on: ref: description: ref to build binary from required: false + node: + type: boolean + description: Build node + default: true + runtime: + type: boolean + description: Build runtime + default: true jobs: srtool: runs-on: ubuntu-latest + if: inputs.runtime == true permissions: contents: write strategy: @@ -108,8 +117,10 @@ jobs: files: | ${{ steps.srtool_build.outputs.wasm_compressed }} ${{ matrix.runtime }}-srtool-digest.json + build-node: runs-on: ${{ matrix.platform.os }} + if: inputs.node == true permissions: contents: write strategy: From 737f96927918d50cb2b405ceeb9e309e645a8e15 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Fri, 2 Aug 2024 00:08:06 +0100 Subject: [PATCH 14/18] ci(runtime): update input description --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 285ebc03..75bdf8dd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ on: default: true runtime: type: boolean - description: Build runtime + description: Build runtimes deterministically default: true jobs: From 86358e64b43a12593012a63a6f40c06f2043b172 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Fri, 2 Aug 2024 00:18:33 +0100 Subject: [PATCH 15/18] ci(runtime): update job conditions --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 75bdf8dd..75b2a5e4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ on: jobs: srtool: runs-on: ubuntu-latest - if: inputs.runtime == true + if: inputs == null || inputs.runtime == true permissions: contents: write strategy: @@ -120,7 +120,7 @@ jobs: build-node: runs-on: ${{ matrix.platform.os }} - if: inputs.node == true + if: inputs == null || inputs.node == true permissions: contents: write strategy: From eb0ee46379889230c06d238484d73d84bfe8652d Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Fri, 2 Aug 2024 00:24:38 +0100 Subject: [PATCH 16/18] ci(runtime): update job conditions --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 75b2a5e4..128a591e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ on: jobs: srtool: runs-on: ubuntu-latest - if: inputs == null || inputs.runtime == true + if: github.event_name == 'release' || inputs.runtime == true permissions: contents: write strategy: @@ -120,7 +120,7 @@ jobs: build-node: runs-on: ${{ matrix.platform.os }} - if: inputs == null || inputs.node == true + if: github.event_name == 'release' || inputs.runtime == true permissions: contents: write strategy: From f6448f7488dfa55ae11235863bae9993684f17b3 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Fri, 2 Aug 2024 00:44:43 +0100 Subject: [PATCH 17/18] ci(runtime): update job conditions --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 128a591e..42a66198 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ on: jobs: srtool: runs-on: ubuntu-latest - if: github.event_name == 'release' || inputs.runtime == true + if: inputs == '' || inputs.runtime == true permissions: contents: write strategy: @@ -120,7 +120,7 @@ jobs: build-node: runs-on: ${{ matrix.platform.os }} - if: github.event_name == 'release' || inputs.runtime == true + if: inputs == '' || inputs.node == true permissions: contents: write strategy: From e1235075a96484c7f6ac864d252d7f731912c780 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Fri, 2 Aug 2024 01:00:01 +0100 Subject: [PATCH 18/18] ci(runtime): update job conditions --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 42a66198..c82d1b9f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ on: jobs: srtool: runs-on: ubuntu-latest - if: inputs == '' || inputs.runtime == true + if: github.event_name != 'workflow_dispatch' && 'true' || inputs.runtime permissions: contents: write strategy: @@ -120,7 +120,7 @@ jobs: build-node: runs-on: ${{ matrix.platform.os }} - if: inputs == '' || inputs.node == true + if: github.event_name != 'workflow_dispatch' && 'true' || inputs.node permissions: contents: write strategy: