previous release:
$ ZCASH_RELEASE_PREV=1.0.0-beta1
-
-## B. create a new release branch / github PR
-### B1. update (commit) version in sources
- doc/README.md
+## B. Create a new release branch / github PR
+### B1. Update (commit) version in sources
+
+ README.md
src/clientversion.h
configure.ac
-
+ contrib/gitian-descriptors/gitian-linux.yml
+
In `configure.ac` and `clientversion.h`:
- Increment `CLIENT_VERSION_BUILD` according to the following schema:
- Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase.
-### B2. write release notes
+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`.
+
+Build and commit to update versions, and then perform the following command:
+
+ $ bash contrib/devtools/gen-manpages.sh
+
+Commit the changes.
+
+### B2. Write release notes
+
+Run the release-notes.py script to generate release notes and update authors.md file. For example:
+
+ $ python zcutil/release-notes.py --version $ZCASH_RELEASE
+
+Add the newly created release notes to the Git repository:
+
+ $ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md
+
+Update the Debian package changelog:
-git shortlog helps a lot, for example:
+ export DEBVERSION="${ZCASH_RELEASE}"
+ export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}"
- $ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \
- > ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md
+ dch -v $DEBVERSION -D jessie -c contrib/debian/changelog
-### B3. change the network magics
+(`dch` comes from the devscripts package.)
+
+### B3. 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
+
+### B4. Merge the previous changes
Do the normal pull-request, review, testing process for this release PR.
Run `./fetch-params.sh`.
-## D. make tag for the newly merged result
+## D. Make tag for the newly merged result
In this example, we ensure master is up to date with the
previous merged PR, then:
$ git tag -s v${ZCASH_RELEASE}
$ git push origin v${ZCASH_RELEASE}
-## E. deploy testnet
+## E. Deploy testnet
Notify the Zcash DevOps engineer/sysadmin that the release has been tagged. They update some variables in the company's automation code and then run an Ansible playbook, which:
Then, verify that nodes can connect to the testnet server, and update the guide on the wiki to ensure the correct hostname is listed in the recommended zcash.conf.
-## F. publish the release announcement (blog, zcash-dev, slack)
-## G. celebrate
+## F. Update the 1.0 User Guide
+
+## G. Publish the release announcement (blog, zcash-dev, slack)
+
+### G1. Check in with users who opened issues that were resolved in the release
+
+Contact all users who opened `user support` issues that were resolved in the release, and ask them if the release fixes or improves their issue.
+
+## H. Make and deploy deterministic builds
+
+- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
+- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
+- If all is well, the DevOps engineer will build the Debian packages and update the
+ [apt.z.cash package repository](https://apt.z.cash).
+
+## I. Celebrate
+
## missing steps
Zcash still needs:
-* deterministic or reproducible builds
-
* thorough pre-release testing (presumably more thorough than standard PR tests)
-* release deployment steps (eg: updating build-depends mirror, deploying testnet, etc...)
-
-* proper Zcash-specific versions and names in software and documentation.
+* automated release deployment (e.g.: updating build-depends mirror, deploying testnet, etc...)