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