]> Git Repo - VerusCoin.git/blame - doc/release-process.md
test
[VerusCoin.git] / doc / release-process.md
CommitLineData
2341e9b5 1Release Process
2====================
a6770caa 3Meta: There should always be a single release engineer to disambiguate responsibility.
2341e9b5 4
3fe431db
JG
5## Pre-release
6
7Check all of the following:
8
9- All dependencies have been updated as appropriate:
10 - BDB
11 - Boost
12 - ccache
13 - libgmp
4c2b2541 14 - libsnark (upstream of our fork)
3fe431db
JG
15 - libsodium
16 - miniupnpc
17 - OpenSSL
18
a6770caa 19## A. Define the release version as:
2341e9b5 20
1fa852f7
JG
21 $ ZCASH_RELEASE=MAJOR.MINOR.REVISION(-BUILD_STRING)
22
525a3b92 23Example:
2341e9b5 24
1fa852f7
JG
25 $ ZCASH_RELEASE=1.0.0-beta2
26
27Also, the following commands use the `ZCASH_RELEASE_PREV` bash variable for the
28previous release:
2341e9b5 29
1fa852f7 30 $ ZCASH_RELEASE_PREV=1.0.0-beta1
1888d3d1 31
c5334c0c
DH
32## B. Create a new release branch / github PR
33### B1. Update (commit) version in sources
2341e9b5 34
7b530c79 35 README.md
bbf75f9f
TH
36 src/clientversion.h
37 configure.ac
1888d3d1
KG
38 contrib/DEBIAN/control
39 contrib/gitian-descriptors/gitian-linux.yml
40
eb2e2b70
SB
41 Build and commit to update versions, and then perform the following commands:
42
ff5f66b8
JG
43 help2man -n "RPC client for the Zcash daemon" src/zcash-cli > contrib/DEBIAN/manpages/zcash-cli.1
44 help2man -n "Network daemon for interacting with the Zcash blockchain" src/zcashd > contrib/DEBIAN/manpages/zcashd.1
45
1888d3d1 46
1fa852f7
JG
47In `configure.ac` and `clientversion.h`:
48
49- Increment `CLIENT_VERSION_BUILD` according to the following schema:
50
51 - 0-24: `1.0.0-beta1`-`1.0.0-beta25`
5428c6ca 52 - 25-49: `1.0.0-rc1`-`1.0.0-rc25`
1fa852f7
JG
53 - 50: `1.0.0`
54 - 51-99: `1.0.0-1`-`1.0.0-49`
55 - (`CLIENT_VERSION_REVISION` rolls over)
56 - 0-24: `1.0.1-beta1`-`1.0.1-beta25`
57
58- Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase.
2341e9b5 59
c5334c0c 60### B2. Write release notes
4bbbdf32 61
c1e46db8 62Run the release-notes.py script to generate release notes and update authors.md file. For example:
4bbbdf32 63
c1e46db8 64 $ python zcutil/release-notes.py --version $ZCASH_RELEASE
1ea8b009 65
1888d3d1
KG
66Update the Debian package changelog:
67
c5334c0c 68 export DEBVERSION="${ZCASH_RELEASE}"
1888d3d1
KG
69 export DEBEMAIL="${DEBEMAIL:[email protected]}"
70 export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}"
71
72 dch -v $DEBVERSION -D jessie -c contrib/DEBIAN/changelog
73
c5334c0c
DH
74(`dch` comes from the devscripts package.)
75
76### B3. Change the network magics
1ea8b009
TH
77
78If this release breaks backwards compatibility, change the network magic
79numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp`
80to random values.
1888d3d1 81
c5334c0c 82### B4. Merge the previous changes
a6770caa
SB
83
84Do the normal pull-request, review, testing process for this release PR.
2341e9b5 85
a6770caa 86## C. Verify code artifact hosting
1a97b22b 87
a6770caa 88### C1. Ensure depends tree is working
4fbfebea 89
d94ce512 90https://ci.z.cash/builders/depends-sources
a6770caa
SB
91
92### C2. Ensure public parameters work
93
94Run `./fetch-params.sh`.
95
c5334c0c 96## D. Make tag for the newly merged result
2341e9b5 97
ece30654 98In this example, we ensure master is up to date with the
525a3b92 99previous merged PR, then:
4fbfebea 100
ece30654 101 $ git tag -s v${ZCASH_RELEASE}
525a3b92 102 $ git push origin v${ZCASH_RELEASE}
e7f12c20 103
c5334c0c 104## E. Deploy testnet
d94ce512
KG
105
106Notify 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:
107
108* builds Zcash based on the specified branch
109* deploys it as a public service (e.g. betatestnet.z.cash, mainnet.z.cash)
110* often the same server can be re-used, and the role idempotently handles upgrades, but if not then they also need to update DNS records
111* possible manual steps: blowing away the `testnet3` dir, deleting old parameters, restarting DNS seeder
13f9b4ba
KG
112
113Then, 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.
d94ce512 114
c5334c0c
DH
115## F. Update the Beta Guide
116## G. Publish the release announcement (blog, zcash-dev, slack)
e2a227a2
DH
117## H. Make and deploy deterministic builds
118
119- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
120- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
121- If all is well, the DevOps engineer will build the Debian packages and update the
122 [apt.z.cash package repository](https://apt.z.cash).
123
124## I. Celebrate
c5334c0c 125
a6770caa 126## missing steps
a6770caa 127Zcash still needs:
4fbfebea 128
a6770caa 129* thorough pre-release testing (presumably more thorough than standard PR tests)
e27d7cb2 130
c5334c0c 131* automated release deployment (e.g.: updating build-depends mirror, deploying testnet, etc...)
This page took 0.133758 seconds and 4 git commands to generate.