From 81097c0d7e61245e47e10f653528090d91187747 Mon Sep 17 00:00:00 2001 From: Peter Bourgon Date: Thu, 1 Oct 2015 17:02:28 +0200 Subject: [PATCH] Updated Release Process (markdown) --- Release-Process.md | 117 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 108 insertions(+), 9 deletions(-) diff --git a/Release-Process.md b/Release-Process.md index b290c4d..4fd4524 100644 --- a/Release-Process.md +++ b/Release-Process.md @@ -1,12 +1,111 @@ -We use the same script as Weave, hence the same documentation applies. +This runbook cobbled together from -* https://github.com/weaveworks/weave/wiki/Release-Process +- https://github.com/weaveworks/weave/wiki/Release-Process +- https://github.com/weaveworks/weave/blob/master/docs/release-process.md +- Blood, sweat, and tears -*BEWARE* when copying `git push -f git@github.com:weaveworks/weave latest_release v0.7.1`, you're pushing to the weave repo. It should be `git push -f git@github.com:weaveworks/scope latest_release v0.7.1`. +If you have a problem with any step, please -Other pointers: -- Release notes should only contain user visible changes; new features and bug fixes. Refactorings don't need to be documented. -- Useful when compiling release notes is the [changes since last release](https://github.com/weaveworks/scope/compare/latest_release...master) -- Also note most pull requests have the issue number in the branch name, which is helpful -- *MAKE SURE* you update your ```make deps``` tools (for instance, ```docker-squash```) and go-gotten dependancies, so you're not compiling with an old version of some library. -- Also, don't forget to do a ```make static``` \ No newline at end of file +- Contact another Scope team member, starting with Peter, for help, and then +- Document what went wrong, and the fix, in the appropriate section! + +Through our powers combined, we can make this process better. + +## Live-stream your release + +If you have the energy, please consider live-streaming your release on the chat. +It's really helpful for tracking problems and fixes. +It can also serve as a helpful source of information for those who follow in your footsteps. + +## Go to a Linux host + +Releases **must** be performed from Linux. +You also need a working Docker environment. + +## Get the latest tools + +As of 1 October 2015, you need our fork of github-release, + +``` +$ go get -u -v github.com/weaveworks/github-release +``` + +You also need weaveworks/tools in the same parent folder as weaveworks/scope + +``` +$ cd .. +$ git clone https://github.com/weaveworks/tools +``` + +## Update the dependencies + +This **must** be done from the master branch. + +``` +$ git checkout master +$ make update +``` + +## Create a release branch + +`$ git checkout -b release-0.1.0` + +## Update the CHANGELOG and test + +See https://github.com/weaveworks/scope/compare/latest_release...master for a diff. +Commit and push the CHANGELOG to the release branch. +Also, load the release branch on your test machines, and click around. +Only proceed from here once you have a few LGTMs. + +## Tag + +``` +$ git tag -a -m "Release v0.1.0" v0.1.0 +$ git push --tags origin release-0.1.0 +$ git tag -a -f -m "Release v0.1.0" latest_release v0.1.0 +$ git push -f git@github.com:weaveworks/scope latest_release +``` + +## bin/release build + +This performs sanity checks and produces artifacts. + +``` +$ bin/release build +``` + +## bin/release draft + +This sets some stuff up on GitHub, so you need a GitHub token. +If you don't have one already, go to https://github.com/settings/tokens/new +and make one with a funny name, and the **public_repo** scope only. (I think.) + +Use it like + +``` +$ env GITHUB_TOKEN=xxx bin/release draft +``` + +## Edit release description on GitHub + +Go to https://github.com/weaveworks/scope/releases and edit the most recent release description +so it matches the previous releases, editing the links as appropriate. +Click **Save draft**, not Publish! + +## bin/release publish + +``` +$ env GITHUB_TOKEN=xxx bin/release publish +``` + +This interacts with Docker. +If you don't need sudo to run Docker commands, you should do + +``` +$ env GITHUB_TOKEN=xxx SUDO= bin/release publish +``` + +## Merge + +Merge the release branch to master. +You're done. Congratulations. \ No newline at end of file