From e84d28d2491c15b5cfc307e9f692d559bb66232c Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Thu, 8 Oct 2026 12:37:27 +0000 Subject: [PATCH] Write the v0.2.0 release note --- docs/releases/v0.2.0.md | 106 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 docs/releases/v0.2.0.md diff --git a/docs/releases/v0.2.0.md b/docs/releases/v0.2.0.md new file mode 100644 index 0000000..488df31 --- /dev/null +++ b/docs/releases/v0.2.0.md @@ -0,0 +1,106 @@ +# ReleaseKit v0.2.0 + +## Summary + +ReleaseKit adds declarative candidate validation and module-selected release +tooling for Woodpecker. Consumers can replace repeated release checks with typed +Go selections or equivalent profile settings, while retaining product-specific +assertions through `AdditionalChecks` and profile `checks`. + +## New features + +- A facade-owned `ValidationSpec` on `ReleaseRequest` and corresponding profile + `validation` object select shared checks for both `Check` and `Publish`. + Structured `ValidationError` diagnostics identify the failed check, relevant + paths and locations, compilation targets, directives, and size measurements. + Wrapping preserves underlying causes and cancellation. +- Race testing selects the race detector for the one standard Go suite. Separate + full vet automatically disables test-time vet and runs after successful tests. + Selected package-compilation targets run afterward with `CGO_ENABLED=0`, + independently of executable artifacts. Source-only libraries can check target + compatibility and retain page-only delivery. +- Go formatting checks inspect committed regular Go source and report formatting + differences while preserving files. +- Offline Markdown validation checks local destinations and supported heading + fragments, including inline/reference links, images, and autolinks. Heading + anchors support visible text, duplicate headings, and Unicode. Outside-checkout + destinations are reported as out of scope by default; consumers can select + boundary enforcement. Submodule contents remain out of scope. +- Independent module-distribution selections inspect committed workspace files + and filesystem module replacements. Versioned replacements are permitted. +- Optional file-size validation checks individual committed blobs, including + symlink text, with a configurable limit and literal file/directory exclusions. + Enabling the check selects a default limit of 1,000,000 bytes; only sizes + strictly greater than the selected limit fail. +- `ExpectedPushURL` and profile `expected_push_url` require an exact match with + Git's effective push destination during publication preflight. A mismatch + returns `ErrUnexpectedPushURL` before candidate validation or tag creation. + Local `Check` ignores the publication expectation. +- The maintained Woodpecker consumer template selects ReleaseKit from the + released application's module configuration. It verifies the event tag and + commit before building the tool, prepares tool dependencies in temporary module + metadata, and preserves tagged module files. Retries use the triggering tag's + dependency selection. ReleaseKit's self-bootstrap template also supports + fetching missing tool dependencies after tag verification. + +See the [configuration reference](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/docs/config.md), +[candidate check guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/docs/consumers/check.md), +[publication guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/docs/consumers/publish.md), +and [delivery guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/docs/consumers/delivery.md) +for supported behavior and adoption examples. + +## Compatibility + +The minimum Go version remains 1.25.0. The root orchestration facade and separate +lightweight `buildinfo` runtime facade keep their existing responsibilities. +Goldmark and `golang.org/x/mod` are new internal dependencies; prepare the module +cache before offline validation or builds. + +Omitted validation selections preserve v0.1.0 defaults. Existing profiles and +product-specific checks continue to work. Race testing requires the native +toolchain's race prerequisites and reports an error when they are unavailable. +Markdown and file-size checks are enabled by non-nil Go specifications or profile +objects, including empty objects; omission or `null` disables them. + +`ReleaseRequest` gains fields, so callers using positional struct literals must +convert them to keyed literals. Validation diagnostics now include structured +detail and additional context. Go callers can inspect `ValidationError` with +`errors.As` and underlying causes with `errors.Is`; CLI integrations should use +exit classifications rather than complete diagnostic strings. + +Source publication still completes at confirmed publication of the intended +annotated tag. Hosted Gitea delivery retains its separate status. ReleaseKit's +deliverables remain the source tag and hosted note page. + +## Upgrade guidance + +1. Update the module dependency: + + ```sh + go get gitea.maximumdirect.net/eric/ReleaseKit@v0.2.0 + ``` + + Consumers using a separately installed executable can update it with: + + ```sh + go install gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@v0.2.0 + ``` + +2. Use v0.2.0 tooling before adding new profile fields. Select the shared checks + appropriate to the product and remove the corresponding duplicate commands + from additional checks. Retain assertions about product behavior. Package + compilation belongs under validation; executable deliverables use `build`. + +3. For module-based CI, adopt the updated + [tag-delivery template](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/examples/woodpecker/tag-delivery.yml) + and remove the independent `RELEASEKIT_VERSION` workflow pin. Ensure the + application module declares ReleaseKit, align local tool bootstrap with that + selection, and retain the product's Go image, delivery profile, and secret + mapping. The + [Woodpecker guidance](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/docs/consumers/delivery.md#woodpecker-tag-workflows) + describes temporary module metadata, older-tag retries, self-bootstrap, and + separately installed tools. + +[COPYRIGHT](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/COPYRIGHT) | +[LICENSE](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/LICENSE) | +[ATTRIBUTION](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/v0.2.0/docs/oss/attribution.md)