Release Process for v21.0
Closed this issue · 2 comments
v21.0.0 Release Process
- Ensure future Release Process issues are created from the template
- Update translations, see translation_process.md. (@UdjinM6) #6122
- Update manpages, see gen-manpages.sh. (@knst) #6125
- Create main net spork hardening PR (@UdjinM6) #6140
- Allow EHF creation with v21 (@knst) #6126
- Update Security.md (@kwvg) #6117
Before every minor and major release:
- Update bips.md to account for changes since the last release (@thephez).
- Update version in configure.ac (don't forget to set CLIENT_VERSION_IS_RELEASE to true) (@PastaPastaPasta)
- Write Release Notes (@PastaPastaPasta @UdjinM6) #6144
- Update src/chainparams.cpp nMinimumChainWork with information from the getblockchaininfo rpc. (@knst) (#6146)
- Update src/chainparams.cpp defaultAssumeValid with information from the getblockhash rpc. (@knst) (#6146)
- Update main net activation timing.
consensus.vDeployments[Consensus::DEPLOYMENT_MN_RR].bit = 10;
consensus.vDeployments[Consensus::DEPLOYMENT_MN_RR].nStartTime = 1704067200; // January 1, 2024
consensus.vDeployments[Consensus::DEPLOYMENT_MN_RR].nTimeout = 1767225600; // January 1, 2026
- This update should be reviewed with a reindex-chainstate with assumevalid=0 to catch any defect that causes rejection of blocks in the past history. (@kwvg ) (@knst)
- Ensure that governance is functional (@knst)
- Ensure that testnet coinbase is partially going to platform (@knst)
- Ensure all TODOs are evaluated and resolved if needed (@PastaPastaPasta to create google sheet of all) https://docs.google.com/spreadsheets/d/1pG_3Rggg8e9YPxZneVrb7c7F-x3y6sU4pZNwPRy6hoM/edit#gid=0 (dcg only) (@knst to resolve)
- Verify insight works (latte?)
- Verify p2pool works (unmaintained; no responsible party)
- Notify mobile team of new protocol version
Tag the Release
- Tag v21.0.0 and push (@PastaPastaPasta)
Check CI
- Validate that CI passes
Do Guix Build (for unsigned binaries) and create PRs
- Pasta Guix Build
- Udjin Guix Build
- Thephez Guix Build
- Kittywhiskers Guix Build
- Knst Guix Build
Create Windows/OS X detached signatures (note: it might be decided skip signed binaries for RCs)
Only once the Windows/OS X builds each have 3 matching signatures may they be signed with their respective release keys.
- Pasta creates windows detached signature and commits
- pasta creates OS X detached signature
Update Guix Builds with signed binaries (note: it might be decided skip signed binaries for RCs)
- Pasta Guix Build
- Udjin Guix Build
- Thephez Guix Build
- Kittywhiskers Guix Build
- Knst Guix Build
After 3 or more people have guix-built and their results match:
- Create SHA256SUMS.asc for the builds
- GPG sign each download / binary
- Upload zips and installers, as well as SHA256SUMS.asc from last step, to github as github draft release.
- Validate SHA256SUMS.asc and all binaries attached to github draft release are correct
- Notarize OS X binaries
- Release on github
- Update website
- Ensure that docker hub images are up to date
Announce the release:
- Release on Dash forum: https://www.dash.org/forum/topic/official-announcements.54/ (@PastaPastaPasta)
- Optionally Discord, twitter, reddit /r/Dashpay, post in slack... but this will usually sort out itself
- Celebrate
After the release
- Submit patches to BTCPay to ensure they use latest / compatible version see #4211 (comment) (@strophy ?)
- Fast forward master; merge master into develop
- Make develop branch the default branch in Github (note this is a potentially breaking change for people who simply clone the repo and build without specifying a branch)
Additional Items
- Prepare release blog post (necessary so we have a permalink to use on twitter, reddit, etc.)
- Prepare product brief (major versions only?) (@thephez; need to talk with marina and publish this asap)
- Prepare a release announcement tweet (tell Marina)
- Follow-up tweets with any important block heights for consensus changes (Marina again)
- Post on reddit
- Update docs (readme and RTD) (@thephez)
- Test Docker build runs without errors in Dashmate (@shumkov)
- Add new Release Process items to in repo release process document (@knst)
@PastaPastaPasta I'm not aware of any changes that are required in bips.md
When we add new special transactions, we need to open an issue on the dashcore-lib repo so it gets updated.