Updated Release Process (markdown)

Peter Bourgon
2015-10-01 17:02:28 +02:00
parent ad7f9d0073
commit 81097c0d7e
+108 -9
@@ -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```
- 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.