mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-06 03:18:01 +00:00
Automation for new release process (#1754)
This commit is contained in:
+113
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Polkadot {{ env.VERSION }} Release checklist
|
||||
---
|
||||
# Release Checklist
|
||||
|
||||
This is the release checklist for Polkadot {{ env.VERSION }}. **All** following
|
||||
checks should be completed before publishing a new release of the
|
||||
Polkadot/Kusama/Westend runtime or client. The current release candidate can be
|
||||
checked out with `git checkout {{ env.VERSION }}`
|
||||
|
||||
### Runtime Releases
|
||||
|
||||
- [ ] Verify [`spec_version`](#spec-version) has been incremented since the
|
||||
last release for any native runtimes from any existing use on public
|
||||
(non-private/test) networks.
|
||||
- [ ] Verify [new migrations](#new-migrations) complete successfully, and the
|
||||
runtime state is correctly updated.
|
||||
- [ ] Verify previously [completed migrations](#old-migrations-removed) are
|
||||
removed.
|
||||
- [ ] Verify pallet and [extrinsic ordering](#extrinsic-ordering) has stayed
|
||||
the same. Bump `transaction_version` if not.
|
||||
- [ ] Verify new extrinsics have been correctly whitelisted/blacklisted for
|
||||
[proxy filters](#proxy-filtering).
|
||||
- [ ] Verify [benchmarks](#benchmarks) have been updated for any modified
|
||||
runtime logic.
|
||||
- [ ] Verify [Polkadot JS API](#polkadot-js) are up to date with the latest
|
||||
runtime changes.
|
||||
|
||||
### All Releases
|
||||
|
||||
- [ ] Check that the new client versions have [run on the network](#burn-in)
|
||||
without issue for 12 hours.
|
||||
- [ ] Check that a draft release has been created at
|
||||
https://github.com/paritytech/polkadot/releases with relevant [release
|
||||
notes](#release-notes)
|
||||
- [ ] Check that [build artifacts](#build-artifacts) have been added to the
|
||||
draft-release
|
||||
|
||||
## Notes
|
||||
|
||||
### Burn In
|
||||
|
||||
Ensure that Parity DevOps has run the new release on Westend, Kusama, and
|
||||
Polkadot validators for at least 12 hours prior to publishing the release.
|
||||
|
||||
### Build Artifacts
|
||||
|
||||
Add any necessary assets to the release. They should include:
|
||||
|
||||
- Linux binary
|
||||
- GPG signature of the Linux binary
|
||||
- SHA256 of binary
|
||||
- Source code
|
||||
- Wasm binaries of any runtimes
|
||||
|
||||
### Release notes
|
||||
|
||||
The release notes should list:
|
||||
|
||||
- The priority of the release (i.e., how quickly users should upgrade)
|
||||
- Which native runtimes and their versions are included
|
||||
- The proposal hashes of the runtimes as built with
|
||||
[srtool](https://gitlab.com/chevdor/srtool)
|
||||
- Any changes in this release that are still awaiting audit
|
||||
|
||||
The release notes may also list:
|
||||
|
||||
- Free text at the beginning of the notes mentioning anything important
|
||||
regarding this release
|
||||
- Notable changes (those labelled with B[1-9]-* labels) separated into sections
|
||||
|
||||
### Spec Version
|
||||
|
||||
A runtime upgrade must bump the spec number. This may follow a pattern with the
|
||||
client release (e.g. runtime v12 corresponds to v0.8.12, even if the current
|
||||
runtime is not v11).
|
||||
|
||||
### New Migrations
|
||||
|
||||
Ensure that any migrations that are required due to storage or logic changes
|
||||
are included in the `on_runtime_upgrade` function of the appropriate pallets.
|
||||
|
||||
### Old Migrations Removed
|
||||
|
||||
Any previous `on_runtime_upgrade` functions from old upgrades must be removed
|
||||
to prevent them from executing a second time.
|
||||
|
||||
### Extrinsic Ordering
|
||||
|
||||
Offline signing libraries depend on a consistent ordering of call indices and
|
||||
functions. Compare the metadata of the current and new runtimes and ensure that
|
||||
the `module index, call index` tuples map to the same set of functions. In case
|
||||
of a breaking change, increase `transaction_version`.
|
||||
|
||||
Note: Adding new functions to the runtime does not constitute a breaking change
|
||||
as long as they are added to the end of a pallet (i.e., does not break any
|
||||
other call index).
|
||||
|
||||
### Proxy Filtering
|
||||
|
||||
The runtime contains proxy filters that map proxy types to allowable calls. If
|
||||
the new runtime contains any new calls, verify that the proxy filters are up to
|
||||
date to include them.
|
||||
|
||||
### Benchmarks
|
||||
|
||||
Run the benchmarking suite with the new runtime and update any function weights
|
||||
if necessary.
|
||||
|
||||
### Polkadot JS
|
||||
|
||||
Ensure that a release of [Polkadot JS API]() contains any new types or
|
||||
interfaces necessary to interact with the new runtime.
|
||||
+14
-14
@@ -3,7 +3,8 @@ name: Publish draft release
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v**.**.**
|
||||
# Catches v1.2.3 and v1.2.3-rc1
|
||||
- v[0-9]+.[0-9]+.[0-9]+*
|
||||
|
||||
jobs:
|
||||
build-runtimes:
|
||||
@@ -99,19 +100,6 @@ jobs:
|
||||
release_name: Polkadot ${{ github.ref }}
|
||||
body_path: ./release_text.md
|
||||
draft: true
|
||||
|
||||
post_to_matrix:
|
||||
runs-on: ubuntu-latest
|
||||
needs: publish-draft-release
|
||||
steps:
|
||||
- name: Internal polkadot channel
|
||||
uses: s3krit/matrix-message-action@v0.0.3
|
||||
with:
|
||||
room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }}
|
||||
access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
|
||||
message: "**New version of polkadot tagged**: ${{ github.ref }}<br/>Gav: Draft release created: ${{ needs.publish-draft-release.outputs.release_url }}"
|
||||
server: "matrix.parity.io"
|
||||
|
||||
publish-runtimes:
|
||||
runs-on: ubuntu-latest
|
||||
needs: ['publish-draft-release']
|
||||
@@ -141,3 +129,15 @@ jobs:
|
||||
asset_path: ./${{ matrix.runtime }}_runtime.compact.wasm
|
||||
asset_name: ${{ matrix.runtime }}_runtime-v${{ steps.get-runtime-ver.outputs.runtime_ver }}.compact.wasm
|
||||
asset_content_type: application/wasm
|
||||
|
||||
post_to_matrix:
|
||||
runs-on: ubuntu-latest
|
||||
needs: publish-draft-release
|
||||
steps:
|
||||
- name: Internal polkadot channel
|
||||
uses: s3krit/matrix-message-action@v0.0.2
|
||||
with:
|
||||
room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }}
|
||||
access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
|
||||
message: "**New version of polkadot tagged**: ${{ github.ref }}<br/>Gav: Draft release created: ${{ needs.publish-draft-release.outputs.release_url }}"
|
||||
server: "matrix.parity.io"
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
name: Release-candidate automation
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release-v[0-9]+.[0-9]+.[0-9]+
|
||||
jobs:
|
||||
tag_rc:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- id: compute_tag
|
||||
name: Compute next rc tag
|
||||
shell: bash
|
||||
run: |
|
||||
# Get last rc tag if exists, else set it to {version}-rc1
|
||||
version=${GITHUB_REF#refs/heads/release-}
|
||||
echo "$version"
|
||||
echo "::set-output name=version::$version"
|
||||
git tag -l
|
||||
last_rc=$(git tag -l "$version-rc*" | sort -V | tail -n 1)
|
||||
if [ -n "$last_rc" ]; then
|
||||
suffix=$(echo "$last_rc" | grep -Eo '[0-9]+$')
|
||||
echo $suffix
|
||||
((suffix++))
|
||||
echo $suffix
|
||||
echo "::set-output name=new_tag::$version-rc$suffix"
|
||||
echo "::set-output name=first_rc::false"
|
||||
else
|
||||
echo "::set-output name=new_tag::$version-rc1"
|
||||
echo "::set-output name=first_rc::true"
|
||||
fi
|
||||
- name: Apply new tag
|
||||
uses: tvdias/github-tagger@v0.0.2
|
||||
with:
|
||||
# We can't use the normal GITHUB_TOKEN for the following reason:
|
||||
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token
|
||||
# RELEASE_BRANCH_TOKEN requires public_repo OAuth scope
|
||||
repo-token: "${{ secrets.RELEASE_BRANCH_TOKEN }}"
|
||||
tag: ${{ steps.compute_tag.outputs.new_tag }}
|
||||
- id: create-issue
|
||||
uses: JasonEtco/create-an-issue@v2
|
||||
# Only create the issue if it's the first release candidate
|
||||
if: steps.compute_tag.outputs.first_rc == 'true'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BRANCH: ${{ steps.compute_tag.outputs.version }}
|
||||
with:
|
||||
filename: .github/ISSUE_TEMPLATE/release.md
|
||||
- uses: s3krit/matrix-message-action@v0.0.2
|
||||
if: steps.create-issue.outputs.url != ''
|
||||
with:
|
||||
room_id: ${{ secrets.INTERNAL_POLKADOT_MATRIX_ROOM_ID }}
|
||||
access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }}
|
||||
server: "matrix.parity.io"
|
||||
message: "Release process for polkadot ${{ steps.compute_tag.outputs.version }} has been started. Tracking issue: ${{ steps.create-issue.outputs.url }}"
|
||||
Reference in New Issue
Block a user