Changeset View
Changeset View
Standalone View
Standalone View
doc/release-process.md
Bitcoin ABC Release Process | Bitcoin ABC Release Process | ||||
=========================== | =========================== | ||||
## Before Release | ## Before Release | ||||
1. Check configuration | 1. Check feature completeness | ||||
- Check features planned for the release are implemented and documented | - Check features planned for the release are implemented and documented. | ||||
(or more informally, that the Release Manager agrees it is feature complete) | Any incomplete items should be discussed with the Release Manager as soon as possible. | ||||
- Check that finished tasks / tickets are marked as resolved | |||||
2. Verify tests passed | |||||
- Any known issues or limitations should be documented in release notes | |||||
- Known bugs should have tickets | - Known bugs should have tickets | ||||
- Run `arc lint --everything` and check there is no linter error | - Any known issues or limitations should be documented in release notes | ||||
- Ensure that bitcoind and bitcoin-qt run with no issue on all supported platforms. | |||||
Manually test bitcoin-qt by sending some transactions and navigating through the menus. | |||||
3. Update the documents / code which needs to be updated every release | 2. Update the documents / code which needs to be updated every release | ||||
- Check that [release-notes.md](doc/release-notes.md) is complete, and fill in any missing items. | - Check that [release-notes.md](doc/release-notes.md) is complete, and fill in any missing items. | ||||
- Update [bips.md](/doc/bips.md) to account for changes since the last release. | - Verify the following were updated by automation since the last release: | ||||
- (major releases) Update [`BLOCK_CHAIN_SIZE`](/src/qt/intro.cpp) to the current size plus | - Seeds (see [README](contrib/seeds/README.md)) | ||||
some overhead. | - Chainparams were updated, such as assume-valid, chainwork, and disk size expectations. | ||||
- Regenerate manpages (run `contrib/devtools/gen-manpages.sh`, or for out-of-tree builds run | - Regenerate manpages (run `contrib/devtools/gen-manpages.sh`, or for out-of-tree builds run | ||||
`BUILDDIR=$PWD/build contrib/devtools/gen-manpages.sh`). | `BUILDDIR=$PWD/build contrib/devtools/gen-manpages.sh`). | ||||
- Update seeds as per [contrib/seeds/README.md](/contrib/seeds/README.md). | |||||
- Update [`src/chainparams.cpp`](/src/chainparams.cpp) m_assumed_blockchain_size and m_assumed_chain_state_size with the current size plus some overhead. | 3. Verify tests passed | ||||
- Run `arc lint --everything` and check there is no linter error | |||||
- Ensure that bitcoind and bitcoin-qt run with no issue on all supported platforms. | |||||
Manually test bitcoin-qt by sending some transactions and navigating through the menus. | |||||
4. Add git tag for release | 4. Add git tag for release | ||||
a. Create the tag: `git tag vM.m.r` (M = major version, m = minor version, r = revision) | a. Create the tag: `git tag vM.m.r` (M = major version, m = minor version, r = revision) | ||||
b. Push the tag to Github: | b. Push the tag to Github: `git push <github remote> vM.m.r` | ||||
``` | |||||
git push <github remote> master | |||||
git push <github remote> vM.m.r | |||||
``` | |||||
5. Increment version number for the next release in: | 5. Increment version number for the next release in: | ||||
- `doc/release-notes.md` (and copy existing one to versioned `doc/release-notes/*.md`) | - `doc/release-notes.md` (and copy existing one to versioned `doc/release-notes/*.md`) | ||||
- `configure.ac` | - `configure.ac` | ||||
- `CMakeLists.txt` | - `CMakeLists.txt` | ||||
- `contrib/seeds/makeseeds.py` (only after a new major release) | - `contrib/seeds/makeseeds.py` (only after a new major release) | ||||
## Release | ## Release | ||||
6. Create Gitian Builds (see [gitian-building.md](/doc/gitian-building.md)) | 6. Create Gitian Builds (see [gitian-building.md](/doc/gitian-building.md)) | ||||
7. Verify matching Gitian Builds, gather signatures | 7. Verify matching Gitian Builds, gather signatures | ||||
8. Verify IBD bith with and without `-checkpoints=0 -assumevalid=0` | 8. Verify IBD both with and without `-checkpoints=0 -assumevalid=0` | ||||
9. Upload Gitian Builds to [bitcoinabc.org](https://download.bitcoinabc.org/) | 9. Upload Gitian Builds to [bitcoinabc.org](https://download.bitcoinabc.org/) | ||||
10. Create a [GitHub release](https://github.com/Bitcoin-ABC/bitcoin-abc/releases): | 10. Create a [GitHub release](https://github.com/Bitcoin-ABC/bitcoin-abc/releases): | ||||
`contrib/release/github-release.sh -a <path to release binaries> -t <release tag> -o <file containing your Github OAuth token>` | `contrib/release/github-release.sh -a <path to release binaries> -t <release tag> -o <file containing your Github OAuth token>` | ||||
11. Create [Ubuntu PPA packages](https://launchpad.net/~bitcoin-abc/+archive/ubuntu/ppa): | 11. Create [Ubuntu PPA packages](https://launchpad.net/~bitcoin-abc/+archive/ubuntu/ppa): | ||||
`contrib/release/debian-packages.sh <name-or-email-for-gpg-signing>` | `contrib/release/debian-packages.sh <name-or-email-for-gpg-signing>` | ||||
12. Notify maintainers of AUR and Docker images to build their packages. | 12. Notify maintainers of AUR and Docker images to build their packages. | ||||
They should be given 1-day advance notice if possible. | They should be given 1-day advance notice if possible. | ||||
## After Release | ## After Release | ||||
13. Update version number on www.bitcoinabc.org | 13. Publish signed checksums (various places, e.g. blog, reddit/r/BitcoinABC) | ||||
14. Publish signed checksums (various places, e.g. blog, reddit/r/BitcoinABC) | |||||
15. Announce Release: | 14. Announce Release: | ||||
- [Reddit](https://www.reddit.com/r/BitcoinABC/) | - [Reddit](https://www.reddit.com/r/BitcoinABC/) | ||||
- Twitter @Bitcoin_ABC | - Twitter @Bitcoin_ABC | ||||
- Public slack channels friendly to Bitcoin ABC announcements | - Public slack channels friendly to Bitcoin ABC announcements | ||||
(eg. #abc-announce on BTCforks, #hardfork on BTCchat) | (eg. #abc-announce on BTCforks, #hardfork on BTCchat) | ||||