]> Git Repo - VerusCoin.git/blobdiff - doc/release-process.md
Test
[VerusCoin.git] / doc / release-process.md
index f359bd4c13111a4f9d7a7677d057921206c68508..b4e2a35650e98ed82cb75b3e7cbaaa85d00b31d2 100644 (file)
@@ -2,42 +2,100 @@ Release Process
 ====================
 Meta: There should always be a single release engineer to disambiguate responsibility.
 
+## Pre-release
+
+The following should have been checked well in advance of the release:
+
+- All dependencies have been updated as appropriate:
+  - BDB
+  - Boost
+  - ccache
+  - libgmp
+  - libsnark (upstream of our fork)
+  - libsodium
+  - miniupnpc
+  - OpenSSL
+
+
+## Release process
+
 ## A. Define the release version as:
 
-    $ ZCASH_RELEASE=${UPSTREAM_VERSION}.z${ZCASH_RELEASE_COUNTER}
-    
+    $ ZCASH_RELEASE=MAJOR.MINOR.REVISION(-BUILD_STRING)
+
 Example:
 
-    $ ZCASH_RELEASE=0.11.2.z2
-    
-Also, the following commands use the ZCASH_RELEASE_PREV bash variable for the previous release:
+    $ ZCASH_RELEASE=1.0.0-beta2
 
-    $ ZCASH_RELEASE_PREV=0.11.2.z1
-    
-## B. create a new release branch / github PR
-### B1. update (commit) version in sources
+Also, the following commands use the `ZCASH_RELEASE_PREV` bash variable for the
+previous release:
 
-    doc/README.md
+    $ ZCASH_RELEASE_PREV=1.0.0-beta1
+
+## B. Create a new release branch / github PR
+
+### B1. Check that you are up-to-date with current master, then create a release branch.
+
+### B2. Update (commit) version in sources.
+
+    README.md
     src/clientversion.h
     configure.ac
-    
-In `configure.ac` and `clientversion.h` change CLIENT_VERSION_IS_RELEASE to
-false while Zcash is in alpha-test phase.
+    contrib/gitian-descriptors/gitian-linux.yml
+
+In `configure.ac` and `clientversion.h`:
+
+- Increment `CLIENT_VERSION_BUILD` according to the following schema:
+
+  - 0-24: `1.0.0-beta1`-`1.0.0-beta25`
+  - 25-49: `1.0.0-rc1`-`1.0.0-rc25`
+  - 50: `1.0.0`
+  - 51-99: `1.0.0-1`-`1.0.0-49`
+  - (`CLIENT_VERSION_REVISION` rolls over)
+  - 0-24: `1.0.1-beta1`-`1.0.1-beta25`
+
+- Change `CLIENT_VERSION_IS_RELEASE` to false while Zcash is in beta-test phase.
+
+If this release changes the behavior of the protocol or fixes a serious bug, we may
+also wish to change the `PROTOCOL_VERSION` in `version.h`.
+
+Commit these changes. (Be sure to do this before building, or else the built binary will include the flag `-dirty`)
+
+Build by running `./zcutil/build.sh`.
+
+Then perform the following command:
+
+    $ bash contrib/devtools/gen-manpages.sh
+
+Commit the changes.
+
+### B3. Generate release notes
+
+Run the release-notes.py script to generate release notes and update authors.md file. For example:
 
-### B2. write release notes
+    $ python zcutil/release-notes.py --version $ZCASH_RELEASE
 
-git shortlog helps a lot, for example:
+Add the newly created release notes to the Git repository:
 
-    $ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \
-        > ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md
+    $ git add doc/release-notes/release-notes-$ZCASH_RELEASE.md
 
-### B3. change the network magics
+Update the Debian package changelog:
+
+    export DEBVERSION="${ZCASH_RELEASE}"
+    export DEBEMAIL="${DEBEMAIL:[email protected]}"
+    export DEBFULLNAME="${DEBFULLNAME:-Zcash Company}"
+
+    dch -v $DEBVERSION -D jessie -c contrib/debian/changelog
+
+(`dch` comes from the devscripts package.)
+
+### B4. Change the network magics
 
 If this release breaks backwards compatibility, change the network magic
 numbers. Set the four `pchMessageStart` in `CTestNetParams` in `chainparams.cpp`
 to random values.
-        
-### B4. merge the previous changes
+
+### B5. Merge the previous changes
 
 Do the normal pull-request, review, testing process for this release PR.
 
@@ -45,37 +103,54 @@ Do the normal pull-request, review, testing process for this release PR.
 
 ### C1. Ensure depends tree is working
 
-http://ci.leastauthority.com:8010/builders/depends-sources
+https://ci.z.cash/builders/depends-sources
 
 ### C2. Ensure public parameters work
 
 Run `./fetch-params.sh`.
 
-## D. make tags / release-branch for the newly merged result
+## D. Make tag for the newly merged result
+
+Checkout master and pull the latest version to ensure master is up to date with the release PR which was merged in before.
 
-In this example, we ensure zc.v0.11.2.latest is up to date with the
-previous merged PR, then:
+Check the last commit on the local and remote versions of master to make sure they are the same.
 
-    $ git tag v${ZCASH_RELEASE}
-    $ git branch zc.v${ZCASH_RELEASE}
+Then create the git tag:
+
+    $ git tag -s v${ZCASH_RELEASE}
     $ git push origin v${ZCASH_RELEASE}
-    $ git push origin zc.v${ZCASH_RELEASE}
-    
-## E. update github default branch to this new release branch
-## F. write / publish a release announcement
-## G. deploy testnet
-## H. write and publish appropriate announcements (blog, zcash-dev, slack)
-## I. celebrate
-## missing steps
 
-Zcash still needs:
+## E. Deploy testnet
 
-* deterministic build
+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:
 
-* signatured tags
+* builds Zcash based on the specified branch
+* deploys it as a public service (e.g. betatestnet.z.cash, mainnet.z.cash)
+* 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
+* possible manual steps: blowing away the `testnet3` dir, deleting old parameters, restarting DNS seeder
 
-* thorough pre-release testing (presumably more thorough than standard PR tests)
+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.
+
+## F. Update the 1.0 User Guide
 
-* release deployment steps (eg: updating build-depends mirror, deploying testnet, etc...)
+## G. Publish the release announcement (blog, zcash-dev, slack)
+
+### G1. Check in with users who opened issues that were resolved in the release
+
+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.
+
+## H. Make and deploy deterministic builds
+
+- Run the [Gitian deterministic build environment](https://github.com/zcash/zcash-gitian)
+- Compare the uploaded [build manifests on gitian.sigs](https://github.com/zcash/gitian.sigs)
+- If all is well, the DevOps engineer will build the Debian packages and update the
+  [apt.z.cash package repository](https://apt.z.cash).
+
+## I. Celebrate
+
+## missing steps
+Zcash still needs:
+
+* thorough pre-release testing (presumably more thorough than standard PR tests)
 
-* proper zcash-specific versions and names in software and documentation.
+* automated release deployment (e.g.: updating build-depends mirror, deploying testnet, etc...)
This page took 0.0271670000000001 seconds and 4 git commands to generate.