5.9 KiB
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
ValidationSpeconReleaseRequestand corresponding profilevalidationobject select shared checks for bothCheckandPublish. StructuredValidationErrordiagnostics 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.
ExpectedPushURLand profileexpected_push_urlrequire an exact match with Git's effective push destination during publication preflight. A mismatch returnsErrUnexpectedPushURLbefore candidate validation or tag creation. LocalCheckignores 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, candidate check guide, publication guide, and delivery guide 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
-
Update the module dependency:
go get gitea.maximumdirect.net/eric/ReleaseKit@v0.2.0Consumers using a separately installed executable can update it with:
go install gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@v0.2.0 -
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. -
For module-based CI, adopt the updated tag-delivery template and remove the independent
RELEASEKIT_VERSIONworkflow 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 describes temporary module metadata, older-tag retries, self-bootstrap, and separately installed tools.