]> Git Repo - VerusCoin.git/blame - doc/release-process.md
Update dnsseeds for mainnet. closes #1369
[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
a6770caa 35 doc/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
41
1fa852f7
JG
42In `configure.ac` and `clientversion.h`:
43
44- Increment `CLIENT_VERSION_BUILD` according to the following schema:
45
46 - 0-24: `1.0.0-beta1`-`1.0.0-beta25`
5428c6ca 47 - 25-49: `1.0.0-rc1`-`1.0.0-rc25`
1fa852f7
JG
48 - 50: `1.0.0`
49 - 51-99: `1.0.0-1`-`1.0.0-49`
50 - (`CLIENT_VERSION_REVISION` rolls over)
51 - 0-24: `1.0.1-beta1`-`1.0.1-beta25`
52
53- Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase.
2341e9b5 54
c5334c0c 55### B2. Write release notes
4bbbdf32 56
525a3b92 57git shortlog helps a lot, for example:
4bbbdf32 58
525a3b92
NW
59 $ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \
60 > ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md
1ea8b009 61
1888d3d1
KG
62Update the Debian package changelog:
63
c5334c0c 64 export DEBVERSION="${ZCASH_RELEASE}"
1888d3d1
KG
65 export DEBEMAIL="${DEBEMAIL:[email protected]}"
66 export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}"
67
68 dch -v $DEBVERSION -D jessie -c contrib/DEBIAN/changelog
69
c5334c0c
DH
70(`dch` comes from the devscripts package.)
71
72### B3. Change the network magics
1ea8b009
TH
73
74If this release breaks backwards compatibility, change the network magic
75numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp`
76to random values.
1888d3d1 77
c5334c0c 78### B4. Merge the previous changes
a6770caa
SB
79
80Do the normal pull-request, review, testing process for this release PR.
2341e9b5 81
a6770caa 82## C. Verify code artifact hosting
1a97b22b 83
a6770caa 84### C1. Ensure depends tree is working
4fbfebea 85
d94ce512 86https://ci.z.cash/builders/depends-sources
a6770caa
SB
87
88### C2. Ensure public parameters work
89
90Run `./fetch-params.sh`.
91
c5334c0c 92## D. Make tag for the newly merged result
2341e9b5 93
ece30654 94In this example, we ensure master is up to date with the
525a3b92 95previous merged PR, then:
4fbfebea 96
ece30654 97 $ git tag -s v${ZCASH_RELEASE}
525a3b92 98 $ git push origin v${ZCASH_RELEASE}
e7f12c20 99
c5334c0c 100## E. Deploy testnet
d94ce512
KG
101
102Notify 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:
103
104* builds Zcash based on the specified branch
105* deploys it as a public service (e.g. betatestnet.z.cash, mainnet.z.cash)
106* 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
107* possible manual steps: blowing away the `testnet3` dir, deleting old parameters, restarting DNS seeder
13f9b4ba
KG
108
109Then, 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 110
c5334c0c
DH
111## F. Update the Beta Guide
112## G. Publish the release announcement (blog, zcash-dev, slack)
e2a227a2
DH
113## H. Make and deploy deterministic builds
114
115- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
116- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
117- If all is well, the DevOps engineer will build the Debian packages and update the
118 [apt.z.cash package repository](https://apt.z.cash).
119
120## I. Celebrate
c5334c0c 121
a6770caa 122## missing steps
a6770caa 123Zcash still needs:
4fbfebea 124
a6770caa 125* thorough pre-release testing (presumably more thorough than standard PR tests)
e27d7cb2 126
c5334c0c 127* automated release deployment (e.g.: updating build-depends mirror, deploying testnet, etc...)
This page took 0.083082 seconds and 4 git commands to generate.