forked from paritytech/polkadot-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Github workflow to automate release draft creation (paritytech#3978)
This PR introduces the github flow which will create a release draft automatically when the rc tag is pushed. The flow contains the following steps: - Gets the info about rust version used to build the node - Builds the runtimes using `srtool` - Extracts the info about each runtime - Aggregates the changelog from the prdocs - Creates the release draft containing all the info related to the release (changelog, runtimes, rust versions) - Attaches the runtimes to the draft - Posts the message to the RelEng internal channel to inform that the build is done. Related to the paritytech#3295 --------- Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
- Loading branch information
Showing
12 changed files
with
308 additions
and
17 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,155 @@ | ||
name: Release - Publish draft | ||
|
||
on: | ||
push: | ||
tags: | ||
# Catches v1.2.3 and v1.2.3-rc1 | ||
- v[0-9]+.[0-9]+.[0-9]+* | ||
|
||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: Current release/rc version | ||
|
||
jobs: | ||
get-rust-versions: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
rustc-stable: ${{ steps.get-rust-versions.outputs.stable }} | ||
steps: | ||
- id: get-rust-versions | ||
run: | | ||
RUST_STABLE_VERSION=$(curl -sS https://raw.githubusercontent.com/paritytech/scripts/master/dockerfiles/ci-unified/Dockerfile | grep -oP 'ARG RUST_STABLE_VERSION=\K[^ ]+') | ||
echo "stable=$RUST_STABLE_VERSION" >> $GITHUB_OUTPUT | ||
build-runtimes: | ||
uses: "./.github/workflows/srtool.yml" | ||
with: | ||
excluded_runtimes: "substrate-test bp cumulus-test kitchensink minimal-template parachain-template penpal polkadot-test seedling shell frame-try sp solochain-template" | ||
|
||
publish-release-draft: | ||
runs-on: ubuntu-latest | ||
needs: [get-rust-versions, build-runtimes] | ||
outputs: | ||
release_url: ${{ steps.create-release.outputs.html_url }} | ||
asset_upload_url: ${{ steps.create-release.outputs.upload_url }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | ||
|
||
- name: Prepare tooling | ||
run: | | ||
URL=https://github.com/chevdor/tera-cli/releases/download/v0.2.4/tera-cli_linux_amd64.deb | ||
wget $URL -O tera.deb | ||
sudo dpkg -i tera.deb | ||
tera --version | ||
- name: Download artifacts | ||
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 | ||
|
||
- name: Prepare draft | ||
id: draft | ||
env: | ||
RUSTC_STABLE: ${{ needs.get-rust-versions.outputs.rustc-stable }} | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
ASSET_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/asset-hub-rococo-runtime/asset-hub-rococo-srtool-digest.json | ||
ASSET_HUB_WESTEND_DIGEST: ${{ github.workspace}}/asset-hub-westend-runtime/asset-hub-westend-srtool-digest.json | ||
BRIDGE_HUB_ROCOCO_DIGEST: ${{ github.workspace}}/bridge-hub-rococo-runtime/bridge-hub-rococo-srtool-digest.json | ||
BRIDGE_HUB_WESTEND_DIGEST: ${{ github.workspace}}/bridge-hub-westend-runtime/bridge-hub-westend-srtool-digest.json | ||
COLLECTIVES_WESTEND_DIGEST: ${{ github.workspace}}/collectives-westend-runtime/collectives-westend-srtool-digest.json | ||
CONTRACTS_ROCOCO_DIGEST: ${{ github.workspace}}/contracts-rococo-runtime/contracts-rococo-srtool-digest.json | ||
CORETIME_ROCOCO_DIGEST: ${{ github.workspace}}/coretime-rococo-runtime/coretime-rococo-srtool-digest.json | ||
CORETIME_WESTEND_DIGEST: ${{ github.workspace}}/coretime-westend-runtime/coretime-westend-srtool-digest.json | ||
GLUTTON_WESTEND_DIGEST: ${{ github.workspace}}/glutton-westend-runtime/glutton-westend-srtool-digest.json | ||
PEOPLE_ROCOCO_DIGEST: ${{ github.workspace}}/people-rococo-runtime/people-rococo-srtool-digest.json | ||
PEOPLE_WESTEND_DIGEST: ${{ github.workspace}}/people-westend-runtime/people-westend-srtool-digest.json | ||
ROCOCO_DIGEST: ${{ github.workspace}}/rococo-runtime/rococo-srtool-digest.json | ||
WESTEND_DIGEST: ${{ github.workspace}}/westend-runtime/westend-srtool-digest.json | ||
run: | | ||
. ./.github/scripts/common/lib.sh | ||
export REF1=$(get_latest_release_tag) | ||
if [[ -z "${{ inputs.version }}" ]]; then | ||
export REF2="${{ github.ref }}" | ||
else | ||
export REF2="${{ inputs.version }}" | ||
fi | ||
echo "REL_TAG=$REF2" >> $GITHUB_ENV | ||
export VERSION=$(echo "$REF2" | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+).*$/\1/') | ||
./scripts/release/build-changelogs.sh | ||
echo "Checking the folder state" | ||
pwd | ||
ls -la scripts/release | ||
- name: Archive artifact context.json | ||
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | ||
with: | ||
name: release-notes-context | ||
path: | | ||
scripts/release/context.json | ||
**/*-srtool-digest.json | ||
- name: Create draft release | ||
id: create-release | ||
uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ env.REL_TAG }} | ||
release_name: Polkadot ${{ env.REL_TAG }} | ||
body_path: ${{ github.workspace}}/scripts/release/RELEASE_DRAFT.md | ||
draft: true | ||
|
||
publish-runtimes: | ||
needs: [ build-runtimes, publish-release-draft ] | ||
continue-on-error: true | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: ${{ fromJSON(needs.build-runtimes.outputs.published_runtimes) }} | ||
|
||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | ||
|
||
- name: Download artifacts | ||
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 | ||
|
||
- name: Get runtime info | ||
env: | ||
JSON: release-notes-context/${{ matrix.chain }}-runtime/${{ matrix.chain }}-srtool-digest.json | ||
run: | | ||
>>$GITHUB_ENV echo ASSET=$(find ${{ matrix.chain }}-runtime -name '*.compact.compressed.wasm') | ||
>>$GITHUB_ENV echo SPEC=$(<${JSON} jq -r .runtimes.compact.subwasm.core_version.specVersion) | ||
- name: Upload compressed ${{ matrix.chain }} v${{ env.SPEC }} wasm | ||
if: ${{ matrix.chain != 'rococo-parachain' }} | ||
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 #v1.0.2 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ needs.publish-release-draft.outputs.asset_upload_url }} | ||
asset_path: ${{ env.ASSET }} | ||
asset_name: ${{ matrix.chain }}_runtime-v${{ env.SPEC }}.compact.compressed.wasm | ||
asset_content_type: application/wasm | ||
|
||
post_to_matrix: | ||
runs-on: ubuntu-latest | ||
needs: publish-release-draft | ||
strategy: | ||
matrix: | ||
channel: | ||
- name: "Team: RelEng Internal" | ||
room: '!GvAyzgCDgaVrvibaAF:parity.io' | ||
|
||
steps: | ||
- name: Send Matrix message to ${{ matrix.channel.name }} | ||
uses: s3krit/matrix-message-action@70ad3fb812ee0e45ff8999d6af11cafad11a6ecf # v0.0.3 | ||
with: | ||
room_id: ${{ matrix.channel.room }} | ||
access_token: ${{ secrets.RELEASENOTES_MATRIX_V2_ACCESS_TOKEN }} | ||
server: m.parity.io | ||
message: | | ||
**New version of polkadot tagged**: ${{ github.ref }}<br/> | ||
Draft release created: ${{ needs.publish-release-draft.outputs.release_url }} |
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
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 @@ | ||
*.json |
Empty file.
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,4 @@ | ||
{# This include generates the section showing the changes #} | ||
## Changelog | ||
|
||
{% include "changelog.md" -%} |
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,6 @@ | ||
## Rust compiler versions | ||
|
||
This release was built and tested against the following versions of `rustc`. | ||
Other versions may work. | ||
|
||
- Rust Stable: `{{ env.RUSTC_STABLE }}` |
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,26 @@ | ||
{# This macro shows one runtime #} | ||
{%- macro runtime(runtime) -%} | ||
|
||
### {{ runtime.name | title }} | ||
|
||
{%- if runtime.data.runtimes.compressed.subwasm.compression.compressed %} | ||
{%- set compressed = "Yes" %} | ||
{%- else %} | ||
{%- set compressed = "No" %} | ||
{%- endif %} | ||
|
||
{%- set comp_ratio = 100 - (runtime.data.runtimes.compressed.subwasm.compression.size_compressed / | ||
runtime.data.runtimes.compressed.subwasm.compression.size_decompressed *100) %} | ||
|
||
``` | ||
🏋️ Runtime Size: {{ runtime.data.runtimes.compressed.subwasm.size | filesizeformat }} ({{ | ||
runtime.data.runtimes.compressed.subwasm.size }} bytes) | ||
🔥 Core Version: {{ runtime.data.runtimes.compressed.subwasm.core_version.specName }}-{{runtime.data.runtimes.compressed.subwasm.core_version.specVersion }} ({{runtime.data.runtimes.compressed.subwasm.core_version.implName }}-{{runtime.data.runtimes.compressed.subwasm.core_version.implVersion }}.tx{{runtime.data.runtimes.compressed.subwasm.core_version.transactionVersion }}.au{{runtime.data.runtimes.compressed.subwasm.core_version.authoringVersion }}) | ||
🗜 Compressed: {{ compressed }}: {{ comp_ratio | round(method="ceil", precision=2) }}% | ||
🎁 Metadata version: V{{ runtime.data.runtimes.compressed.subwasm.metadata_version }} | ||
🗳️ system.setCode hash: {{ runtime.data.runtimes.compressed.subwasm.proposal_hash }} | ||
🗳️ authorizeUpgrade hash: {{ runtime.data.runtimes.compressed.subwasm.parachain_authorize_upgrade_hash }} | ||
🗳️ Blake2-256 hash: {{ runtime.data.runtimes.compressed.subwasm.blake2_256 }} | ||
📦 IPFS: {{ runtime.data.runtimes.compressed.subwasm.ipfs_hash }} | ||
``` | ||
{%- endmacro runtime %} |
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,19 @@ | ||
{# This include shows the list and details of the runtimes #} | ||
{%- import "runtime.md.tera" as m_r -%} | ||
|
||
{# --- #} | ||
|
||
## Runtimes | ||
|
||
{% set rtm = srtool[0] -%} | ||
|
||
The information about the runtimes included in this release can be found below. | ||
The runtimes have been built using [{{ rtm.data.gen }}](https://github.com/paritytech/srtool) and `{{ rtm.data.rustc }}`. | ||
|
||
{%- for runtime in srtool | sort(attribute="name") %} | ||
{%- set HIDE_VAR = "HIDE_SRTOOL_" ~ runtime.name | upper %} | ||
{%- if not env is containing(HIDE_VAR) %} | ||
|
||
{{ m_r::runtime(runtime=runtime) }} | ||
{%- endif %} | ||
{%- endfor %} |
Oops, something went wrong.