3.3 KiB
layout | title |
---|---|
default | How to build and ship a release |
How to build and ship a release
Here are my notes from producing the v0.2.2 release. Change the version number as appropriate.
Step 1. Run the integration tests
- If you are at StackOverflow, this is in TC as "DNS > Integration Tests".
- Otherwise:
- Run "go test" (documented in Creating new DNS Resource Types)
- Run the integration tests (documented in Writing new DNS providers
Step 2. Bump the verison number
Edit the "Version" variable in main.go
and commit.
export PREVVERSION=2.4
export VERSION=2.5
git checkout master
vi main.go
git commit -m'Release v'"$VERSION" main.go
git tag v0."$VERSION"
git push origin tag v0."$VERSION"
Step 3. Make the draft release.
On github.com, click on "Draft a new release"
Pick the v0.$VERSION tag
Release title: Release v0.$VERSION
Fill in the text box with something friendly like, "So many new features!" then make a bullet list of major new functionality.
Review the git log using this command:
git log v0."$VERSION"...v0."$PREVVERSION"
(Don't click SAVE until the next step is complete!)
Create the binaries and attach them to the release:
go run build/build.go
NOTE: This command creates binaries with the version number and git hash embedded. It also builds the releases for all supported platforms (i.e. creates a .exe for Windows even if you are running on Linux. Isn't Go amazing?)
WARNING: if there are unchecked in files, the version string will have "dirty" appended.
This is what it looks like when you did it right:
$ ./dnscontrol-Darwin version
dnscontrol 0.1.5 ("6fdf78997815055bbe119c0116c9e2d60310a515") built 24 Aug 17 11:26 EDT
This is what it looks like when there was a file that should have been checked in:
$ ./dnscontrol-Darwin version
dnscontrol 0.1.5 ("6fdf78997815055bbe119c0116c9e2d60310a515[dirty]") built 24 Aug 17 11:27 EDT
^^^^^
^^^^^ See?
^^^^^
Step 4. Attach the binaries and release.
Drag and drop binaries into the web form.
Submit the release.
Step 5. Announce it via email
Email the mailing list: (note the format of the Subject line and that the first line of the email is the URL of the release)
To: dnscontrol-discuss@googlegroups.com
Subject: New release: dnscontrol v0.$VERSION
https://github.com/StackExchange/dnscontrol/releases/tag/v0.$VERSION
So many new providers and features! Plus, a new testing framework that makes it easier to add big features without fear of breaking old ones.
* list
* of
* major
* changes
Step 6. Announce it via chat
Mention on https://gitter.im/dnscontrol/Lobby that the new release has shipped.
dnscontrol $VERSION has been released! https://github.com/StackExchange/dnscontrol/releases/tag/v0.$VERSION
Step 7. Get credit!
Mention the fact that you did this release in your weekly accomplishments.
If you are at Stack Overflow:
- Add the release to your weekly snippets
- Run this build:
dnscontrol_embed - Promote most recent artifact into ExternalDNS repo