zcashd/doc/release-process.md

76 lines
2.0 KiB
Markdown
Raw Normal View History

2013-05-19 21:30:00 -07:00
Release Process
====================
2016-05-16 22:08:35 -07:00
Meta: There should always be a single release engineer to disambiguate responsibility.
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
## A. Define the release version as:
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
$ ZCASH_RELEASE=${UPSTREAM_VERSION}.z${ZCASH_RELEASE_COUNTER}
Example:
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
$ ZCASH_RELEASE=0.11.2.z2
Also, the following commands use the ZCASH_RELEASE_PREV bash variable for the previous release:
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
$ ZCASH_RELEASE_PREV=0.11.2.z1
## B. create a new release branch / github PR
### B1. update (commit) version in sources
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
doc/README.md
2016-06-16 18:32:55 -07:00
src/clientversion.h
configure.ac
2016-05-16 22:08:35 -07:00
2016-06-16 18:32:55 -07:00
In `configure.ac` and `clientversion.h` change CLIENT_VERSION_IS_RELEASE to
false while Zcash is in alpha-test phase.
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
### B2. write release notes
2014-08-12 16:24:05 -07:00
git shortlog helps a lot, for example:
2014-08-12 16:24:05 -07:00
$ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \
> ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md
2016-05-16 22:08:35 -07:00
### B3. merge the previous changes
Do the normal pull-request, review, testing process for this release PR.
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
## C. Verify code artifact hosting
2016-05-16 22:08:35 -07:00
### C1. Ensure depends tree is working
2016-05-16 22:08:35 -07:00
http://ci.leastauthority.com:8010/builders/depends-sources
### C2. Ensure public parameters work
Run `./fetch-params.sh`.
## D. make tags / release-branch for the newly merged result
2013-05-19 21:30:00 -07:00
In this example, we ensure zc.v0.11.2.latest is up to date with the
previous merged PR, then:
2016-05-16 22:08:35 -07:00
$ git tag v${ZCASH_RELEASE}
$ git branch zc.v${ZCASH_RELEASE}
$ git push origin v${ZCASH_RELEASE}
$ git push origin zc.v${ZCASH_RELEASE}
2016-05-16 22:08:35 -07:00
## E. update github default branch to this new release branch
## F. write / publish a release announcement
## G. deploy testnet
## H. write and publish appropriate announcements (blog, zcash-dev, slack)
## I. celebrate
## missing steps
2016-05-16 22:08:35 -07:00
Zcash still needs:
2016-05-16 22:08:35 -07:00
* deterministic build
2013-05-19 21:30:00 -07:00
2016-05-16 22:08:35 -07:00
* signatured tags
2016-05-16 22:08:35 -07:00
* thorough pre-release testing (presumably more thorough than standard PR tests)
2016-05-16 22:08:35 -07:00
* release deployment steps (eg: updating build-depends mirror, deploying testnet, etc...)
2016-05-16 22:08:35 -07:00
* proper zcash-specific versions and names in software and documentation.