## Pre-release
-Check all of the following:
+The following should have been checked well in advance of the release:
- All dependencies have been updated as appropriate:
- BDB
- miniupnpc
- OpenSSL
+
+## Release process
+
## A. Define the release version as:
$ ZCASH_RELEASE=MAJOR.MINOR.REVISION(-BUILD_STRING)
$ ZCASH_RELEASE_PREV=1.0.0-beta1
## B. Create a new release branch / github PR
-### B1. Update (commit) version in sources
+
+### B1. Check that you are up-to-date with current master, then create a release branch.
+
+### B2. Update (commit) version in sources.
README.md
src/clientversion.h
configure.ac
contrib/gitian-descriptors/gitian-linux.yml
-Build and commit to update versions, and then perform the following commands:
-
- help2man -n "RPC client for the Zcash daemon" src/zcash-cli > contrib/debian/manpages/zcash-cli.1
- help2man -n "Network daemon for interacting with the Zcash blockchain" src/zcashd > contrib/debian/manpages/zcashd.1
-
-Check the version number in the man pages as they use the commit id e.g. 1.0.6-xxxxxxx which may need to be manually cleaned up. Also check the titles use "zcashd" and "zcash-cli", not "zcash".
-
In `configure.ac` and `clientversion.h`:
- Increment `CLIENT_VERSION_BUILD` according to the following schema:
If this release changes the behavior of the protocol or fixes a serious bug, we may
also wish to change the `PROTOCOL_VERSION` in `version.h`.
-### B2. Write release notes
+Commit these changes. (Be sure to do this before building, or else the built binary will include the flag `-dirty`)
+
+Build by running `./zcutil/build.sh`.
+
+Then perform the following command:
+
+ $ bash contrib/devtools/gen-manpages.sh
+
+Commit the changes.
+
+### B3. Generate release notes
Run the release-notes.py script to generate release notes and update authors.md file. For example:
(`dch` comes from the devscripts package.)
-### B3. Change the network magics
+### B4. Change the network magics
If this release breaks backwards compatibility, change the network magic
numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp`
to random values.
-### B4. Merge the previous changes
+### B5. Merge the previous changes
Do the normal pull-request, review, testing process for this release PR.
## D. Make tag for the newly merged result
-In this example, we ensure master is up to date with the
-previous merged PR, then:
+Checkout master and pull the latest version to ensure master is up to date with the release PR which was merged in before.
+
+Check the last commit on the local and remote versions of master to make sure they are the same.
+
+Then create the git tag:
$ git tag -s v${ZCASH_RELEASE}
$ git push origin v${ZCASH_RELEASE}