]>
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 | ||
26722e47 | 7 | The 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 | 26 | Example: |
2341e9b5 | 27 | |
1fa852f7 JG |
28 | $ ZCASH_RELEASE=1.0.0-beta2 |
29 | ||
30 | Also, the following commands use the `ZCASH_RELEASE_PREV` bash variable for the | |
31 | previous 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 |
46 | In `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 |
59 | If this release changes the behavior of the protocol or fixes a serious bug, we may |
60 | also wish to change the `PROTOCOL_VERSION` in `version.h`. | |
61 | ||
8144a213 JG |
62 | Commit these changes. (Be sure to do this before building, or else the built binary will include the flag `-dirty`) |
63 | ||
64 | Build by running `./zcutil/build.sh`. | |
65 | ||
66 | Then perform the following command: | |
63378706 JG |
67 | |
68 | $ bash contrib/devtools/gen-manpages.sh | |
69 | ||
70 | Commit the changes. | |
71 | ||
26722e47 | 72 | ### B3. Generate release notes |
4bbbdf32 | 73 | |
c1e46db8 | 74 | Run 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 |
78 | Add the newly created release notes to the Git repository: |
79 | ||
80 | $ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md | |
81 | ||
1888d3d1 KG |
82 | Update 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 | |
94 | If this release breaks backwards compatibility, change the network magic | |
95 | numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp` | |
96 | to random values. | |
1888d3d1 | 97 | |
26722e47 | 98 | ### B5. Merge the previous changes |
a6770caa SB |
99 | |
100 | Do 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 | 106 | https://ci.z.cash/builders/depends-sources |
a6770caa SB |
107 | |
108 | ### C2. Ensure public parameters work | |
109 | ||
110 | Run `./fetch-params.sh`. | |
111 | ||
c5334c0c | 112 | ## D. Make tag for the newly merged result |
2341e9b5 | 113 | |
8144a213 JG |
114 | Checkout master and pull the latest version to ensure master is up to date with the release PR which was merged in before. |
115 | ||
116 | Check the last commit on the local and remote versions of master to make sure they are the same. | |
117 | ||
118 | Then 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 | |
125 | 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: | |
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 | |
132 | 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 | 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 | ||
140 | 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. | |
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 | 152 | Zcash 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...) |