Skip to content

Latest commit

 

History

History
91 lines (56 loc) · 4.18 KB

release-process.md

File metadata and controls

91 lines (56 loc) · 4.18 KB

Release Process

Branch updates

Before every release candidate

Before every major and minor release

  • Update bips.md to account for changes since the last release.
  • Update version in configure.ac (don't forget to set CLIENT_VERSION_RC to 0).
  • Write release notes (see "Write the release notes" below).
  • Update src/chainparams.cpp nMinimumChainWork with information from the getblockchaininfo rpc.
  • Update src/chainparams.cpp defaultAssumeValid with information from the getblockhash rpc.
    • The selected value must not be orphaned so it may be useful to set the value two blocks back from the tip.
    • Testnet should be set some tens of thousands back from the tip due to reorgs there.
    • 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.

Before every major release

  • Update hardcoded seeds, see this pull request for an example.
  • Update src/chainparams.cpp m_assumed_blockchain_size and m_assumed_chain_state_size with the current size plus some overhead.
  • Update src/chainparams.cpp chainTxData with statistics about the transaction count and rate. Use the output of the RPC getchaintxstats, see this pull request for an example. Reviewers can verify the results by running getchaintxstats <window_block_count> <window_last_block_hash> with the window_block_count and window_last_block_hash from your output.
  • On both the master branch and the new release branch:
  • On the new release branch in configure.ac and build_msvc/defi_config.h (see this commit):
    • set CLIENT_VERSION_REVISION to 0
    • set CLIENT_VERSION_IS_RELEASE to true

Before branch-off

  • Clear the release notes and move them to the wiki (see "Write the release notes" below).

After branch-off (on master)

  • Update the version of contrib/gitian-descriptors/*.yml.

After branch-off (on the major release branch)

  • Update the versions and the link to the release notes draft in doc/release-notes.md.

Before final release

  • Merge the release notes from the wiki into the branch.
  • Ensure the "Needs release note" label is removed from all relevant pull requests and issues.

Building

Create release tag

Tag the version (or release candidate) in git:

git tag -s v(new version, e.g. 0.20.0)

After create tag, github workflow will automatically build the artifacts.

Write the release notes

Open a draft of the release notes for collaborative editing at https://github.com/bitcoin-core/bitcoin-devwiki/wiki.

For the period during which the notes are being edited on the wiki, the version on the branch should be wiped and replaced with a link to the wiki which should be used for all announcements until -final.

Write the release notes. git shortlog helps a lot, for example:

git shortlog --no-merges v(current version, e.g. 0.19.2)..v(new version, e.g. 0.20.0)

(or ping @wumpus on IRC, he has specific tooling to generate the list of merged pulls and sort them into categories based on labels).

Generate list of authors:

git log --format='- %aN' v(current version, e.g. 0.20.0)..v(new version, e.g. 0.20.1) | sort -fiu

Announce the release:

  • Update slack announcements channel.

  • Update in the telgram channel.

  • Update twitter, reddit, ... but this will usually sort out itself

  • Celebrate