Separate the Go minimum from the release build toolchain
This commit is contained in:
@@ -150,9 +150,11 @@ exit codes, and transport behavior.
|
|||||||
|
|
||||||
Use the maintained [tag-delivery workflow](../../examples/woodpecker/tag-delivery.yml)
|
Use the maintained [tag-delivery workflow](../../examples/woodpecker/tag-delivery.yml)
|
||||||
in the consumer repository's `.woodpecker/` directory. Set `GO_IMAGE` to an
|
in the consumer repository's `.woodpecker/` directory. Set `GO_IMAGE` to an
|
||||||
image with Go 1.25 or newer, Git, and a local Go version compatible with the
|
image with Git and a Go toolchain compatible with the consumer module and its
|
||||||
consumer module. It uses `GOTOOLCHAIN=local`; Go does not download a different
|
selected ReleaseKit version. Choose the patch used for the consumer's release
|
||||||
toolchain. The tag's `go.mod` must select ReleaseKit as a module dependency.
|
build and validation. The template uses `GOTOOLCHAIN=local`; Go does not download
|
||||||
|
a different toolchain. The tag's `go.mod` must select ReleaseKit as a module
|
||||||
|
dependency.
|
||||||
Configure the Woodpecker repository secret `releasekit_gitea_token`; the
|
Configure the Woodpecker repository secret `releasekit_gitea_token`; the
|
||||||
template maps it to `RELEASEKIT_GITEA_TOKEN` for delivery. The repository needs
|
template maps it to `RELEASEKIT_GITEA_TOKEN` for delivery. The repository needs
|
||||||
a `delivery` profile. Page-only and binary behavior both use this template; the
|
a `delivery` profile. Page-only and binary behavior both use this template; the
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
**Base Policy Version:** 1.4
|
**Base Policy Version:** 1.4
|
||||||
|
|
||||||
**Last Updated**: 2026-10-07
|
**Last Updated**: 2026-10-08
|
||||||
|
|
||||||
**Upstream Source:** [release.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/release.md)
|
**Upstream Source:** [release.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/release.md)
|
||||||
|
|
||||||
@@ -81,6 +81,35 @@ Additional compatibility promises and deliberate exceptions belong in the
|
|||||||
adopted policy or canonical contract documentation. Release notes explain
|
adopted policy or canonical contract documentation. Release notes explain
|
||||||
changes; they do not redefine current compatibility contracts.
|
changes; they do not redefine current compatibility contracts.
|
||||||
|
|
||||||
|
## Go Minimum And Release Toolchain
|
||||||
|
|
||||||
|
ReleaseKit provides reasonable support for routine build and release needs,
|
||||||
|
following [ADR 0002](../adr/0002-routine-releases.md). Its Go support policy relies
|
||||||
|
on upstream compatibility commitments and verification proportionate to those
|
||||||
|
needs.
|
||||||
|
|
||||||
|
Select the Go series during release preparation. When advancing the consumer
|
||||||
|
minimum, use the latest locally available stable series and record its initial
|
||||||
|
stable version in `go.mod`, such as `go 1.26.0`. Use a higher patch minimum when
|
||||||
|
a dependency requirement or identified correctness fix requires it. Minimum
|
||||||
|
increases follow the versioning and compatibility rules above and are explained
|
||||||
|
in the release note.
|
||||||
|
|
||||||
|
Build the maintainer release executable and validate the candidate with the
|
||||||
|
same latest locally available patch of the selected series. Keep that toolchain
|
||||||
|
active throughout preparation, tool bootstrap, and validation, using local
|
||||||
|
toolchain selection. Maintained CI images follow the chosen build toolchain.
|
||||||
|
The patch used for these operations is separate from the consumer minimum.
|
||||||
|
|
||||||
|
Successful build and release validation on that patch serve as sufficient
|
||||||
|
evidence of support from the series' initial stable release through subsequent
|
||||||
|
patch releases, subject to known dependency requirements or correctness issues.
|
||||||
|
This relies on Go's [release policy](https://go.dev/doc/devel/release#policy) and
|
||||||
|
[compatibility commitments](https://go.dev/doc/go1compat). Additional
|
||||||
|
patch-specific validation is warranted by concrete evidence; routine releases
|
||||||
|
require no patch-version matrix. Record the actual validation toolchain in the
|
||||||
|
release evidence.
|
||||||
|
|
||||||
## Release Documentation And Preparation
|
## Release Documentation And Preparation
|
||||||
|
|
||||||
Every new release must include `docs/releases/<version>.md` in the tagged
|
Every new release must include `docs/releases/<version>.md` in the tagged
|
||||||
|
|||||||
@@ -12,8 +12,36 @@ succeeded. CI and consumer installation are not completion checks.
|
|||||||
|
|
||||||
## Prepare a candidate
|
## Prepare a candidate
|
||||||
|
|
||||||
Use a local Go 1.25 toolchain and a clean clone. Start on `main`, choose an
|
Use a clean clone on `main`. The chosen build toolchain is Go 1.26.8. Make that
|
||||||
unused stable `vMAJOR.MINOR.PATCH` version, and add
|
local installation the active `go` command for preparation, building the release
|
||||||
|
executable, and candidate validation:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export GOTOOLCHAIN=local
|
||||||
|
go version
|
||||||
|
```
|
||||||
|
|
||||||
|
Record the reported version with the validation results. The
|
||||||
|
[Go support policy](policy/release.md#go-minimum-and-release-toolchain) owns
|
||||||
|
series selection, consumer minima, patch exceptions, and validation scope.
|
||||||
|
The maintained [source-delivery image](../examples/woodpecker/releasekit-source-delivery.yml)
|
||||||
|
and [consumer template image](../examples/woodpecker/tag-delivery.yml) follow the
|
||||||
|
chosen build toolchain; update them together when that selection changes.
|
||||||
|
|
||||||
|
The current consumer minimum is declared in [go.mod](../go.mod). When preparing
|
||||||
|
a release that raises it to Go 1.26, the normal declaration is:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go mod edit -go=1.26.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Retain any higher patch minimum required by dependencies or a specific fix.
|
||||||
|
Make module changes before committing the candidate. A release preserving the
|
||||||
|
existing minimum keeps its current declaration. Minimum increases must fit the
|
||||||
|
[compatibility policy](policy/release.md#versioning-and-compatibility); before
|
||||||
|
v1.0.0, an increase belongs in a minor release.
|
||||||
|
|
||||||
|
Choose an unused stable `vMAJOR.MINOR.PATCH` version, and add
|
||||||
`docs/releases/<version>.md` with a first heading containing `ReleaseKit` and
|
`docs/releases/<version>.md` with a first heading containing `ReleaseKit` and
|
||||||
the exact version. Summarize the change and any compatibility or upgrade impact.
|
the exact version. Summarize the change and any compatibility or upgrade impact.
|
||||||
End the note with the three license links at the immutable source tag:
|
End the note with the three license links at the immutable source tag:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ when:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: deliver
|
- name: deliver
|
||||||
image: golang:1.25.0-bookworm
|
image: golang:1.26.8-bookworm
|
||||||
environment:
|
environment:
|
||||||
RELEASEKIT_GITEA_TOKEN:
|
RELEASEKIT_GITEA_TOKEN:
|
||||||
from_secret: releasekit_gitea_token
|
from_secret: releasekit_gitea_token
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- GO_IMAGE: golang:1.25.0-bookworm
|
- GO_IMAGE: golang:1.26.8-bookworm
|
||||||
|
|
||||||
when:
|
when:
|
||||||
- event: tag
|
- event: tag
|
||||||
|
|||||||
Reference in New Issue
Block a user