]>
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/gitian-descriptors/gitian-linux.yml |
39 | ||
1fa852f7 JG |
40 | In `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 |
53 | If this release changes the behavior of the protocol or fixes a serious bug, we may |
54 | also wish to change the `PROTOCOL_VERSION` in `version.h`. | |
55 | ||
63378706 JG |
56 | Build and commit to update versions, and then perform the following command: |
57 | ||
58 | $ bash contrib/devtools/gen-manpages.sh | |
59 | ||
60 | Commit the changes. | |
61 | ||
c5334c0c | 62 | ### B2. Write release notes |
4bbbdf32 | 63 | |
c1e46db8 | 64 | Run 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 |
68 | Add the newly created release notes to the Git repository: |
69 | ||
70 | $ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md | |
71 | ||
1888d3d1 KG |
72 | Update 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 | |
84 | If this release breaks backwards compatibility, change the network magic | |
85 | numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp` | |
86 | to random values. | |
1888d3d1 | 87 | |
c5334c0c | 88 | ### B4. Merge the previous changes |
a6770caa SB |
89 | |
90 | Do 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 | 96 | https://ci.z.cash/builders/depends-sources |
a6770caa SB |
97 | |
98 | ### C2. Ensure public parameters work | |
99 | ||
100 | Run `./fetch-params.sh`. | |
101 | ||
c5334c0c | 102 | ## D. Make tag for the newly merged result |
2341e9b5 | 103 | |
ece30654 | 104 | In this example, we ensure master is up to date with the |
525a3b92 | 105 | previous 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 | |
112 | 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: | |
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 | |
119 | 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 | 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 | ||
127 | Contact 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 | 139 | Zcash 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...) |