]>
Commit | Line | Data |
---|---|---|
2341e9b5 | 1 | Release Process |
2 | ==================== | |
a6770caa | 3 | Meta: There should always be a single release engineer to disambiguate responsibility. |
2341e9b5 | 4 | |
3fe431db JG |
5 | ## Pre-release |
6 | ||
7 | Check 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 | 23 | Example: |
2341e9b5 | 24 | |
1fa852f7 JG |
25 | $ ZCASH_RELEASE=1.0.0-beta2 |
26 | ||
27 | Also, the following commands use the `ZCASH_RELEASE_PREV` bash variable for the | |
28 | previous 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 |
47 | In `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 | 62 | Run 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 |
66 | Update 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 | |
78 | If this release breaks backwards compatibility, change the network magic | |
79 | numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp` | |
80 | to random values. | |
1888d3d1 | 81 | |
c5334c0c | 82 | ### B4. Merge the previous changes |
a6770caa SB |
83 | |
84 | Do 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 | 90 | https://ci.z.cash/builders/depends-sources |
a6770caa SB |
91 | |
92 | ### C2. Ensure public parameters work | |
93 | ||
94 | Run `./fetch-params.sh`. | |
95 | ||
c5334c0c | 96 | ## D. Make tag for the newly merged result |
2341e9b5 | 97 | |
ece30654 | 98 | In this example, we ensure master is up to date with the |
525a3b92 | 99 | previous 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 | |
106 | Notify 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 | |
113 | Then, 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 | 127 | Zcash 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...) |