]>
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 |
a6770caa SB |
31 | |
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 | |
a6770caa | 38 | |
1fa852f7 JG |
39 | In `configure.ac` and `clientversion.h`: |
40 | ||
41 | - Increment `CLIENT_VERSION_BUILD` according to the following schema: | |
42 | ||
43 | - 0-24: `1.0.0-beta1`-`1.0.0-beta25` | |
5428c6ca | 44 | - 25-49: `1.0.0-rc1`-`1.0.0-rc25` |
1fa852f7 JG |
45 | - 50: `1.0.0` |
46 | - 51-99: `1.0.0-1`-`1.0.0-49` | |
47 | - (`CLIENT_VERSION_REVISION` rolls over) | |
48 | - 0-24: `1.0.1-beta1`-`1.0.1-beta25` | |
49 | ||
50 | - Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase. | |
2341e9b5 | 51 | |
a6770caa | 52 | ### B2. write release notes |
4bbbdf32 | 53 | |
525a3b92 | 54 | git shortlog helps a lot, for example: |
4bbbdf32 | 55 | |
525a3b92 NW |
56 | $ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \ |
57 | > ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md | |
1ea8b009 TH |
58 | |
59 | ### B3. change the network magics | |
60 | ||
61 | If this release breaks backwards compatibility, change the network magic | |
62 | numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp` | |
63 | to random values. | |
a6770caa | 64 | |
1ea8b009 | 65 | ### B4. merge the previous changes |
a6770caa SB |
66 | |
67 | Do the normal pull-request, review, testing process for this release PR. | |
2341e9b5 | 68 | |
a6770caa | 69 | ## C. Verify code artifact hosting |
1a97b22b | 70 | |
a6770caa | 71 | ### C1. Ensure depends tree is working |
4fbfebea | 72 | |
d94ce512 | 73 | https://ci.z.cash/builders/depends-sources |
a6770caa SB |
74 | |
75 | ### C2. Ensure public parameters work | |
76 | ||
77 | Run `./fetch-params.sh`. | |
78 | ||
ece30654 | 79 | ## D. make tag for the newly merged result |
2341e9b5 | 80 | |
ece30654 | 81 | In this example, we ensure master is up to date with the |
525a3b92 | 82 | previous merged PR, then: |
4fbfebea | 83 | |
ece30654 | 84 | $ git tag -s v${ZCASH_RELEASE} |
525a3b92 | 85 | $ git push origin v${ZCASH_RELEASE} |
e7f12c20 DH |
86 | |
87 | ## E. deploy testnet | |
d94ce512 KG |
88 | |
89 | 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: | |
90 | ||
91 | * builds Zcash based on the specified branch | |
92 | * deploys it as a public service (e.g. betatestnet.z.cash, mainnet.z.cash) | |
93 | * 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 | |
94 | * possible manual steps: blowing away the `testnet3` dir, deleting old parameters, restarting DNS seeder | |
13f9b4ba KG |
95 | |
96 | 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 | 97 | |
e7f12c20 DH |
98 | ## F. publish the release announcement (blog, zcash-dev, slack) |
99 | ## G. celebrate | |
a6770caa | 100 | ## missing steps |
a6770caa | 101 | Zcash still needs: |
4fbfebea | 102 | |
d94ce512 | 103 | * deterministic or reproducible builds |
2341e9b5 | 104 | |
a6770caa | 105 | * thorough pre-release testing (presumably more thorough than standard PR tests) |
e27d7cb2 | 106 | |
a6770caa | 107 | * release deployment steps (eg: updating build-depends mirror, deploying testnet, etc...) |
e27d7cb2 | 108 | |
d94ce512 | 109 | * proper Zcash-specific versions and names in software and documentation. |