]> Git Repo - VerusCoin.git/blame - doc/release-process.md
Add 1.0.7 release notes and update authors.md
[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/gitian-descriptors/gitian-linux.yml
39
1fa852f7
JG
40In `configure.ac` and `clientversion.h`:
41
42- Increment `CLIENT_VERSION_BUILD` according to the following schema:
43
44 - 0-24: `1.0.0-beta1`-`1.0.0-beta25`
5428c6ca 45 - 25-49: `1.0.0-rc1`-`1.0.0-rc25`
1fa852f7
JG
46 - 50: `1.0.0`
47 - 51-99: `1.0.0-1`-`1.0.0-49`
48 - (`CLIENT_VERSION_REVISION` rolls over)
49 - 0-24: `1.0.1-beta1`-`1.0.1-beta25`
50
51- Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase.
2341e9b5 52
58582925
S
53If this release changes the behavior of the protocol or fixes a serious bug, we may
54also wish to change the `PROTOCOL_VERSION` in `version.h`.
55
63378706
JG
56Build and commit to update versions, and then perform the following command:
57
58 $ bash contrib/devtools/gen-manpages.sh
59
60Commit the changes.
61
c5334c0c 62### B2. Write release notes
4bbbdf32 63
c1e46db8 64Run the release-notes.py script to generate release notes and update authors.md file. For example:
4bbbdf32 65
c1e46db8 66 $ python zcutil/release-notes.py --version $ZCASH_RELEASE
1ea8b009 67
861c89ae
S
68Add the newly created release notes to the Git repository:
69
70 $ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md
71
1888d3d1
KG
72Update the Debian package changelog:
73
c5334c0c 74 export DEBVERSION="${ZCASH_RELEASE}"
1888d3d1
KG
75 export DEBEMAIL="${DEBEMAIL:[email protected]}"
76 export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}"
77
861c89ae 78 dch -v $DEBVERSION -D jessie -c contrib/debian/changelog
1888d3d1 79
c5334c0c
DH
80(`dch` comes from the devscripts package.)
81
82### B3. Change the network magics
1ea8b009
TH
83
84If this release breaks backwards compatibility, change the network magic
85numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp`
86to random values.
1888d3d1 87
c5334c0c 88### B4. Merge the previous changes
a6770caa
SB
89
90Do the normal pull-request, review, testing process for this release PR.
2341e9b5 91
a6770caa 92## C. Verify code artifact hosting
1a97b22b 93
a6770caa 94### C1. Ensure depends tree is working
4fbfebea 95
d94ce512 96https://ci.z.cash/builders/depends-sources
a6770caa
SB
97
98### C2. Ensure public parameters work
99
100Run `./fetch-params.sh`.
101
c5334c0c 102## D. Make tag for the newly merged result
2341e9b5 103
ece30654 104In this example, we ensure master is up to date with the
525a3b92 105previous merged PR, then:
4fbfebea 106
ece30654 107 $ git tag -s v${ZCASH_RELEASE}
525a3b92 108 $ git push origin v${ZCASH_RELEASE}
e7f12c20 109
c5334c0c 110## E. Deploy testnet
d94ce512
KG
111
112Notify 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:
113
114* builds Zcash based on the specified branch
115* deploys it as a public service (e.g. betatestnet.z.cash, mainnet.z.cash)
116* 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
117* possible manual steps: blowing away the `testnet3` dir, deleting old parameters, restarting DNS seeder
13f9b4ba
KG
118
119Then, 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 120
6dac65b1
JG
121## F. Update the 1.0 User Guide
122
c5334c0c 123## G. Publish the release announcement (blog, zcash-dev, slack)
6dac65b1
JG
124
125### G1. Check in with users who opened issues that were resolved in the release
126
127Contact all users who opened `user support` issues that were resolved in the release, and ask them if the release fixes or improves their issue.
128
e2a227a2
DH
129## H. Make and deploy deterministic builds
130
131- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
132- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
133- If all is well, the DevOps engineer will build the Debian packages and update the
134 [apt.z.cash package repository](https://apt.z.cash).
135
136## I. Celebrate
c5334c0c 137
a6770caa 138## missing steps
a6770caa 139Zcash still needs:
4fbfebea 140
a6770caa 141* thorough pre-release testing (presumably more thorough than standard PR tests)
e27d7cb2 142
c5334c0c 143* automated release deployment (e.g.: updating build-depends mirror, deploying testnet, etc...)
This page took 0.129076 seconds and 4 git commands to generate.