These are the instructions for producing a release. Please change the version number as appropriate.
Make sure you are using the latest version of
(listed on https://golang.org/dl/)
From the “master” branch, run
bin/make-release.sh v3.xx.y where
“v3.xx.y” should be the new release version.
NOTE: This warning can be ignored:
error: failed to push some refs to 'github.com:StackExchange/dnscontrol.git'
make-release.sh script will do the following:
NOTE TO SELF: The last 2 times we did a release the tagging wasn’t right. Be sure to watch this carefully, make sure the tag is handled correctly. (i.e. tag vx.y.z should be on release_vx.y.z) and update the docs with the correct procedure.
NOTE: If you bump the major version, you need to change all the source files. The last time this was done (v2 -> v3) these two commands automated all that:
# Make all the changes: sed -i.bak -e 'email@example.com.StackExchange.firstname.lastname@example.org/StackExchange/dnscontrol/v3@g' go.* $(fgrep -lri --include '*.go' github.com/StackExchange/dnscontrol/v2 *) # Delete the backup files: find * -name \*.bak -delete
Verify the version string was updated:
$ grep Version main.go
(Make sure that it lists the new version number.)
draft-notes.txt is just a draft and needs considerable editing.
Once complete, the contents of this file will be used in multiple places (release notes, email announcements, etc.)
Entries in the bullet list should be phrased in the positive: “Feature FOO now does BAR”. This is often the opposite of the related issue, which was probably phrased, “Feature FOO is broken because of BAR”.
Every item should include the ID of the issue related to the change. If there was no issue, create one and close it.
Sort the list most important/exciting changes earlier in the list.
Items related to a specific provier should begin with the all-caps name of the provider, such as “ROUTE53: Added support for sandwiches (#100)”
See https://github.com/StackExchange/dnscontrol/releases for examples for recent release notes and copy that style.
This release includes many new providers (JoeDNS and MaryDNS), dozens of bug fixes, and a new testing framework that makes it easier to add big features without fear of breaking old ones. Major features: * NEW PROVIDER: Providername (#issueid) * Add FOO DNS record support (#issueid) * Add SIP/JABBER labels to underscore exception list (#453) Provider-specific changes: * PROVIDER: New feature or thing (#issueid) * PROVIDER: Another feature or bug fixed (#issueid) * CLOUDFLARE: Fix CF trying to update non-changeable TTL (#issueid)
Fill in the
Tag version @
Release title: Release v$VERSION
Fill in the text box with the release notes written above.
(DON’T click SAVE until the next step is complete!)
(DO use the “preview” tab to proofread the text.)
Verify that the automated tests passed. If not, fix the problems before you continue.
This is also an opportunity to update any dependencies (go modules). See the last section for commands that make that possible. Only update modules related to the providers in the automated testing system. When those tests pass, wait for the Github Actions to complete and verify the tests all passed.
Merge the PR into Master.
a. Publish the release.
b. Wait for workflow to complete
There’s a GitHub Actions workflow which automatically builds and attaches all 3 binaries to the release. Refresh the page after a few minutes and you’ll see dnscontrol-Darwin, dnscontrol-Linux, and dnscontrol.exe attached as assets.
Email the release notes to 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: email@example.com Subject: New release: dnscontrol v$VERSION https://github.com/StackExchange/dnscontrol/releases/tag/v$VERSION [insert the release notes here]
NOTE: You won’t be able to post to the mailing list unless you are on it. Click here to join.
Mention on https://gitter.im/dnscontrol/Lobby that the new release has shipped.
ANNOUNCEMENT: dnscontrol v$VERSION has been released! https://github.com/StackExchange/dnscontrol/releases/tag/v$VERSION
Mention the fact that you did this release in your weekly accomplishments.
If you are at Stack Overflow:
dnscontrol_embed - Promote most recent artifact into ExternalDNS repo
List out-of-date modules and update any that seem worth updating:
go get github.com/oligot/go-mod-upgrade go-mod-upgrade go mod tidy
go get -u github.com/psampaz/go-mod-outdated go list -mod=mod -u -m -json all | go-mod-outdated -update -direct # If any are out of date, update via: go get -u or go get -u module/path # Once the updates are complete, tidy up: go mod tidy