Write the v0.2.0 release note
This commit is contained in:
106
docs/releases/v0.2.0.md
Normal file
106
docs/releases/v0.2.0.md
Normal file
@@ -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)
|
||||
Reference in New Issue
Block a user