boulder/docs
Aaron Gable 8accf18e60
Create tools/release.go to automate release tagging (#6731)
Create tools/release/tag and tools/release/branch, a pair of small Go
scripts which automates the creation of release tags and hotfix
branches. It also updates our release documentation to provide
instructions on how to use these new tools.

### //tools/release/tag/main.go:

In its primary mode, this script creates a new release tag pointing at
the current tip of `main`. It assumes that you have
"github.com/letsencrypt/boulder" (i.e. this repo) set as your "origin"
remote. The new tag is always of the format "v0.YYYYMMDD.0", so that the
major version does not make any backwards-compatibility guarantees, the
minor version continues our tradition of date-stamping our version
numbers, and the patch version can be incremented by hotfix releases. It
only pushes the newly-created tag if passed the "-push" flag; otherwise
it just creates the new tag locally and exits, allowing the user to
inspect it and push it themselves.

This tag naming system is superior to our current
"release-YYYY-MM-DD[a]" system for a few reasons. First, by virtue of
being a Semver, we get access to tools (like pkg.go.dev) which
understand semver. It shortens our tags, making them easier to read in
horizontally-constrained environments like github's tag dropdowns and
releases sidebar. And it provides a dedicated place (the patch version)
for us to indicate hotfix tags, rather than our ad-hoc letter-based
suffix system.

Eventually, it will also support a mode where you supply a hotfix
release branch name, and it tags the tip of that branch instead of the
tip of main. This mode does not yet exist, to ensure that we can land
the this MVP.

### //tools/release/branch/main.go:

This script tags an existing tag name as input, and produces a new
release branch starting at that tag. The new branch has the name
"release-branch-foo", where "foo" is the major and minor of the base
tag's semantic version number. The intention is that commits will then
be merged to that release branch using the standard pull-request
workflow, and then the as-yet-unimplemented code path of the
tagging tool (see above) will be used to tag the hotfix release itself.

Fixes #5726
2025-06-30 11:32:14 -07:00
..
CODE_OF_CONDUCT.md Reorganize docs and bring in release docs (#6077) 2022-05-04 12:21:37 -07:00
CONTRIBUTING.md docs: update CONTRIBUTING.md (#7857) 2024-12-04 18:26:08 -08:00
CRLS.md crl-updater: split temporal/explicit sharding by serial (#7990) 2025-02-04 11:45:46 -05:00
DESIGN.md identifier: Remove helper funcs from PB identifiers migration (#8236) 2025-06-13 12:55:32 -07:00
ISSUANCE-CYCLE.md docs: add ISSUANCE-CYCLE.md (#7444) 2024-05-06 13:01:08 -07:00
acme-divergences.md Fix typos in documentation and error messages (#7975) 2025-01-24 08:10:06 -08:00
acme-implementation_details.md small docs change: minimum key size (#5158) 2020-10-29 12:14:27 -07:00
config-validation.md Remove repeated words in comments (#7445) 2024-04-23 10:30:33 -04:00
error-handling.md Overhaul internal error usage (#2583) 2017-03-22 23:27:31 -07:00
logging.md log: emit warnings and errors on stderr (#6325) 2022-08-29 15:00:55 -07:00
multi-va.md va: compute maxRemoteFailures based on MPIC (#7810) 2024-11-18 15:36:09 -08:00
redis.md Simplify docker-compose network setup (#8214) 2025-05-30 13:23:27 -07:00
release.md Create tools/release.go to automate release tagging (#6731) 2025-06-30 11:32:14 -07:00