From cfc82c8e13c2bc4e0ff4fb75c3452dec13825018 Mon Sep 17 00:00:00 2001 From: Chris Hunt <114173+cdhunt@users.noreply.github.com> Date: Mon, 15 Aug 2022 10:41:45 -0400 Subject: [PATCH] DOCS: Update with new release process (#1707) * Update with new release process * Move major bump to its own section; split step 1 into 2 parts * Remove version number from main.go * Linting * Add example `git tag` command * Try a different regex pattern for release note generation Co-authored-by: Tom Limoncelli --- .goreleaser.yml | 2 +- docs/public/circleci_release.png | Bin 0 -> 82472 bytes docs/release-engineering.md | 177 ++++++++----------------------- main.go | 3 +- 4 files changed, 47 insertions(+), 135 deletions(-) create mode 100644 docs/public/circleci_release.png diff --git a/.goreleaser.yml b/.goreleaser.yml index 257232faf..595659a30 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -25,7 +25,7 @@ changelog: regexp: "(?i)^.*(major|new provider|feature)[(\\w)]*:+.*$" order: 1 - title: 'Provider-specific changes:' - regexp: "(?i)^(akamaiedgedns|autodns|axfrddns|azure_dns|bind|cloudflareapi|cloudflareapi_old|cloudns|cscglobal|desec|digitalocean|dnsimple|dnsmadeeasy|domainnameshop|exoscale|gandi_v5|gcloud|hedns|hetzner|hexonet|hostingde|inwx|linode|msdns|namecheap|namedotcom|netcup|ns1|octodns|oracle|ovh|packetframe|powerdns|route53|softlayer|transip|vultr)[(\\w)]*:+.*$" + regexp: "(?i)((akamaiedge|autodns|axfrd|azure_dns|bind|cloudflare|cloudflareapi_old|cloudns|cscglobal|desec|digitalocean|dnsimple|dnsmadeeasy|domainnameshop|exoscale|gandi_v5|gcloud|hedns|hetzner|hexonet|hostingde|inwx|linode|msdns|namecheap|namedotcom|netcup|ns1|octodns|oracle|ovh|packetframe|powerdns|route53|softlayer|transip|vultr).*:)+.*" order: 2 - title: 'Depreciation warnings:' regexp: "(?i)^.*Deprecate[(\\w)]*:+.*$" diff --git a/docs/public/circleci_release.png b/docs/public/circleci_release.png new file mode 100644 index 0000000000000000000000000000000000000000..735fdd1bfdac679915fd0736331201da63c6f08b GIT binary patch literal 82472 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 z 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Þy>YTiYpE-aDyu?gj%-4XF3(Ls>2$1{Fun&19i#Nz zkM*|;GtUl9oZEIb#z$YqZ%h!A_cXq|u;782W)uWA3?tyf7CasdJ*#nbQ{flFbYTWX zpfaSO15=w%pv2T>+^B#Vm**DZVs)L@s8h6oT>Z-Wk5}!sLeI_gBOvd?mJ>?Gsc+*7 zDq?|`b&t1f-%SEwl}6epI0ZQH)?egHPva>HCRbyIAze0czdewlxyuT?#!Xr@!GL9xvY@X$~f)XGl#BGO|=2 z(bcn-DakxK>U1P4VwAdbU+O};-gdH!Q%P;jGO1#;xA-qQhu*T1RGC}tJ9DPlZ%!@;JSVlQiweESBS(){ij@c0g4 zpbZj5Qw}Yw%iZ53Ml+|pIS&vC9K`#^DB=RnzmvpeNW+{YKd2Nqj^z10$}ZYHc?snN7I|=zvv*M+=UByn&Or zLB^>)OAK87ZxA8F|{V`jJj*BPaaEx6#LK%sKk8P7{oWI3UYMaNH zHjY;k$GqA;54?H?M+Ox;5l>^A<^DvPYx&36{ul3`w;aXxjQ0m4*B`VH4TlF!Z^`S!Tb;B{j`Zpxp>VCg? z{HO9x+mrLYMNBVoX_#Yw2lDfLKN$T6S3mTo^Un1mZL9`v@!PHzC@{><=4O}G=!vY=u{-Z<{Z`l-+slk*ZD84 zc#_RsBQJ{Mm9sO3F9&HMnmB!J@_(MH5mRiJ=amOWeWV!Mtx-RT-92qLGhG=S4tizs zQ+|6^_xm1^J)|U|n!2mX2hE~8y~#;;bQ;HjsCd$ocd9pIOm+)!dfB*~4r$laOG5ha z*HBkt&O!GpD0lgn(8v~%_nv}x&Mo+PAzk(*uG0eeWwK*Q*IE~^VM4jzF%$V~oyJI< z)s-)QFF#g0ERfdY`iEgmQ!6{nz*UFA;s2(hR7kwa%}M`O1r{f^7MCyR`<2 zQ7sq1I}hFT z62wBCVH3lrO+)izFuzfEOzV88;_oKs_2v*#1~YRuHA04KT%7E60iL_*wSaA$to@Fi z#1v%xq+eVG;g^b#TScnnLgo31@%RPtY zq7;?-+1MIBS?4Z65w$##7J(37u>xq^oYS$yWiU4IZC2Ruv~ovVShidWJhy9M!_Ths zr7pUHuER3wQ8W$4NpvbvRh6jY_=g-y3cA!;_ro&!)?S7omBzlw$YC~OO^RucE`~3q zp8AdR`%jgmxCha^|2bv~^EDvJfBT^T_9pGY&3sMvl2PQEdKwi*60vE83|Ay6D?4+n zXP)jYMq6btp3}6y=5oqxD32S-dVo&Rz>;3cAe9B}`~3!%xc*}yRHfTX-(}n{OZ!^!U2=tIOmS|3suR5*#|1IeUl<^H2f$ zS98+-YW>-LK4D(&`wZ8xBKgJTg4Vh&mJGESDvUUAIzcn5DQPhjRSyghzSC=kToZ}P z(K;*c01QJ2N*9(32<)af*uLukKZ{TWZs5xAPCj7=i%ru&X36Sw`-OoOFq+SUW1-`e z6JqKCRal?LDk`!rHTne#iWH$b4 zVdlIOfwZ1CEw_EH!*+rFGHkDSYDc@{@%IDTEN|lORvrfF^K>`oj!h>wRDlwWin;5n zT_4;KkCk%qj2bSt0+}?YpolZdM|atg>YsG+7Vm3H4moX`!wdB0WRS|#5+lE(kBIjP zcPdvrbB1PUSG{tx&W>FrAvz@ym%cnTTx|Cs7t6LRw}Y)RNgOSa`!@6wd!xZ!_0U6_QX^d74wm&HfQh4 zKTdSVQRBJ-aN`Uf9Yjgk6%VE|0c83SPkL(F<5rQSL(0AfMwy}P_lyz)uL{;Xsm=td zJ95*v3He2j-qrVu`##^56T~gE*taQLA|cq%htX@vL#@itQJ8tQ89^_nf-slaaWaLPBlm4P?+5%f z1sbrQgL5eE!mRueOQLb+|r-lc;&retya!NNF)`p4LjwIB>qZBD`8A z+w~@MAOK5tFPyx|T6NdL+lP>miXQV%e(DgzPa$JxSXIZKcRoRndRt^)I$)Y6s*hEZ zpKnvEgS{4L*lOKb3XU1Xt|ioIJlfl(oIs!f+;p@oRAIahF#4%8FKO6TP`!nJ?-6N| z-<0#i6D2p+!Y8DZm<+$DudlAnvMB6QHF!FV2)}*trx3?-$nCzy^{Hs8tFyLx;I5Ne z)%fwZ?#2${F#R~Hv2#DR8|)xWADo4^fP&J!WNA9RmCaP$0SCiYKlCb?kK!T@C)>S< zIz@Nl-vVGT57RDI%Sl*YsrD>NmN2dV(L~Ur1+;|BT*>AyeAIJC#_nN_cJ5?q=Fdr> zi|{wx5wCxIU5`Ej%noN)!q&upF>y>UwWL-VL1yUr3q6|c`k!2RAgFu_F`8z(-YU~B zdbxDJK+oBK0k&!f0m`G@-h)mlk>x#&T?g_b@ARxCl#(f?8?ja_6&8|{NC@ZTo82s# z(4TaFt2jMDJJJed<27r8q1i+c)a}WXKPET|^8|8{2EUq~Me~8w^z0#L%_tfq1&2DJ ze){u3;Btu3a2<`)hml#8Q*pd80s}eL8{oaNAP$$Oi|FnOdz^CJsg3UmW9?0x;bH8c z^O_2SSq%moYUVaSROfW@x8R<6^PcV{JE{PKOjM@RX?W$Y*^;&n<;$g+XuqPtzzYq} zY5F#iE5E#@LMqDIR)|f-3*r-xwJr@^TQKGGLDVN^WjK-CmJ-|~Wqd`ZI-(28H;w?l zRW-0Y7}EIK;zj6$*OBkJ!M|bVFq8Oz#Lo}KB(B4C2Zl{D;*?AxsU<$HQwA@*S(H0Z zyp=(TCxC&A+Yvd|)3hjZEGD|I6yDb9L8Y9b06_#Dk&0|RZ6xSHMgS+8ES-yNaP4U% zG36@~N9Hio!$)(Z^x2U<`n0|ycP-JBO=bOVAC~Qux6Gk8%92=ycQ6?<+Pc-~WsL7C z+3O(#4=8&H$ECH|x1BuNc781iBnsh0-SI`G*_A2Uykm!A=B;K~{KQuV{-O#RB!Lrb zlaPQmuU6`~^+_x%2!zEer?CR&%RC*X~IFqkM#OGwa4z_oxggmyE3wT-S0ZDQ}Yh;o& z{w?YV(2B?TlXbiXzgjWP(qgTyrC{Fhz=%jaskfsX`$Ax0>i-N+LgHICi^_v8PV__Cps1EV|X{%u+2;rG;PykK=xasM43iJwL9t84lt!}!^$ z;hNXCgGbrnhZv>8c@`?dKo{Dr=^GqL+|r27(B>>RPd&mNzB&3VQ39&(J`A5e%J!3- z=CM(75z|J0Z=ZBwS7NI3Xq;ILTDo)-NCCt(7_~Di|9n@(*(xE_dfTkp>ili&BL<#ajO|3dnwn%yX(AMo0>gIUK_0I#+pb~ZCF(XGltaR);jIt%=B%m3+ms5Hn% z*;&wDWV2AI9ohg?L~nnno#+2SrckHz#m!JU(IKV;75Bc!WD|z=8kPMjdbrs<1WR}~ z6q_+I|3z7vha9z4`+E~meQ$|=&HaB4BQt}={~bCB$?L}<|N7pdNX{=&%lf}@NT564g0Tkk`Mh$n-xd)>2YRU8pht+cKm7r~h!Lk^|lTzg&UUJXH37?U<#0 a++#7SbEOY5r(r)pwKvjAQk4?M!T$#(MK(GB literal 0 HcmV?d00001 diff --git a/docs/release-engineering.md b/docs/release-engineering.md index 405845d40..3459023b4 100644 --- a/docs/release-engineering.md +++ b/docs/release-engineering.md @@ -6,90 +6,45 @@ title: How to build and ship a release # How to build and ship a release These are the instructions for producing a release. -Please change the version number as appropriate. +CircleCI will do most of the work for you. You will need to edit the draft release notes. -## Step 1. Tools check +Please change the version number as appropriate. Substitute (for example) +`3.19.0` any place you see `VERSION` in this doc. -Make sure you are using the latest version of `go` -(listed on [https://golang.org/dl/](https://golang.org/dl/)) +## Step 1. Tag the commit in master that you want to release -```bash -go version +```shell +git tag -a v3.19.0 +git push origin --tags ``` +See [Git Docs](https://git-scm.com/book/en/v2/Git-Basics-Tagging) for more examples. -## Step 2. Create a new release branch +Soon after +CircleCI will start a [build](https://app.circleci.com/pipelines/github/StackExchange/dnscontrol?branch=master) Workflow and produce all of the artifacts for the release. -From the "master" branch, run `bin/make-release.sh v3.xx.y` where -"v3.xx.y" should be the new release version. +![CircleCI Release Screenshot](public/circleci_release.png) -NOTE: This warning can be ignored: `error: failed to push some refs to 'github.com:StackExchange/dnscontrol.git'` +## Step 2. Create the release notes -The `make-release.sh` script will do the following: +The draft release notes are created for you. In this step you'll edit them. -1. Tag the current branch locally and remotely. -2. Update main.go with the new version string. -3. Create a file called draft-notes.txt which you will edit into the - release notes. -4. Print instructions on how to create the release PR. +The CircleCI build uses [GoReleaser](https://goreleaser.com/) which produces the [GitHub Release](https://github.com/StackExchange/dnscontrol/releases) with Release Notes derived from the commit history between now and the last tag. +These notes are just a draft and needs considerable editing. +You can also find a copy of the release notes in the CircleCI `release` job Artifacts. +These release notes will be used in multiple places (release notes, email announcements, etc.) +Release notes style guide: -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: - -```bash -# Make all the changes: -sed -i.bak -e 's@github.com.StackExchange.dnscontrol.v2@github.com/StackExchange/dnscontrol/v3@g' go.* $(fgrep -lri --include '*.go' github.com/StackExchange/dnscontrol/v2 *) -# Delete the backup files: -find * -name \*.bak -delete -``` - - -## Step 3. Verify the version string - -Verify the version string was updated: - -```bash -grep Version main.go -``` - -(Make sure that it lists the new version number.) - - -## Step 4. Make the PR - -The output of "make-release.sh" will mention a URL that will create the PR ("1. Create a PR:") - -Load the URL and make the PR. - - -## Step 5. Write the release notes. - -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)" +* 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)" +* The `Depreciation warnings` section should just copy from `README.md`. If you change one, change it in the README too (you can make that change in this PR). See [https://github.com/StackExchange/dnscontrol/releases for examples](https://github.com/StackExchange/dnscontrol/releases) for recent release notes and copy that style. -The `Depreciation warnings` section should just copy from `README.md`. If you -change one, change it in the README too (you can make that change in this PR). - - Example/template: ```text @@ -110,58 +65,7 @@ Provider-specific changes: * CLOUDFLARE: Fix CF trying to update non-changeable TTL (#issueid) ``` - -## Step 6. Make the draft release. - -[On github.com, click on "Draft a new release"](https://github.com/StackExchange/dnscontrol/releases/new) - -Fill in the `Tag version` @ `Target` with: - - * Tag version: v$VERSION (this should be the first tag listed) - * Target: master (this should be the default; and disappears when - you enter the tag) - -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.) - - -## Step 7. Verify tests completed. - -By now the tests should have started running. - -Verify that the automated tests passed. If not, fix the problems -before you continue. - - -## Step 8. Merge - -Merge the PR. - -The tests will run again. - -Once they pass, you are ready to create and promote the release (see next step). - - -## Step 9. Publish the release - -a. Publish the release. - -* Make sure the "This is a pre-release" checkbox is NOT checked. -* Click "Publish Release". - -b. Wait for workflow to complete - -There's a GitHub Actions [workflow](https://github.com/StackExchange/dnscontrol/actions?query=workflow%3Arelease) 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. - - -## Step 10. Announce it via email +## Step 2. Announce it via email 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) @@ -177,8 +81,7 @@ https://github.com/StackExchange/dnscontrol/releases/tag/v$VERSION NOTE: You won't be able to post to the mailing list unless you are on it. [Click here to join](https://groups.google.com/forum/#!forum/dnscontrol-discuss). - -## Step 11. Announce it via chat +## Step 3. Announce it via chat Mention on [https://gitter.im/dnscontrol/Lobby](https://gitter.im/dnscontrol/Lobby) that the new release has shipped. @@ -186,31 +89,42 @@ Mention on [https://gitter.im/dnscontrol/Lobby](https://gitter.im/dnscontrol/Lob ANNOUNCEMENT: dnscontrol v$VERSION has been released! https://github.com/StackExchange/dnscontrol/releases/tag/v$VERSION ``` - -## Step 12. Get credit! +## Step 4. 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` +* Add the release to your weekly snippets +* Run this build: `dnscontrol_embed - Promote most recent artifact into ExternalDNS repo` +## Tip: How to bump the major version -# Tip: How to rebuild flattener +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 +were used. They're included her for reference. + +```bash +# Make all the changes: +sed -i.bak -e 's@github.com.StackExchange.dnscontrol.v2@github.com/StackExchange/dnscontrol/v3@g' go.* $(fgrep -lri --include '*.go' github.com/StackExchange/dnscontrol/v2 *) +# Delete the backup files: +find * -name \*.bak -delete +``` + +## Tip: How to rebuild flattener Rebuilding flatter requites go1.17.1 and the gopherjs compiler. Install go1.17.1: -``` +```shell go install golang.org/dl/go1.17.1@latest go1.17.1 download ``` Install gopherjs: -``` +```shell go install github.com/gopherjs/gopherjs@latest ``` @@ -218,15 +132,14 @@ Build the software: NOTE: GOOS can't be Darwin because GOPHERJS doesn't support it. -``` +```shell cd docs/flattener export GOPHERJS_GOROOT="$(go1.17.1 env GOROOT)" export GOOS=linux gopherjs build ``` - -# Tip: How to update modules +## Tip: How to update modules List out-of-date modules and update any that seem worth updating: diff --git a/main.go b/main.go index 6434ac9ab..c947f4a3a 100644 --- a/main.go +++ b/main.go @@ -16,10 +16,9 @@ import ( // Version management. Goals: // 1. Someone who just does "go get" has at least some information. // 2. If built with build/build.go, more specific build information gets put in. -// Update the number here manually each release, so at least we have a range for go-get people. var ( SHA = "" - Version = "v3.18.1" + Version = "" BuildTime = "" )