Files
ReleaseKit/docs/releases/v0.2.0.md

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 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, 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

  1. Update the module dependency:

    go get gitea.maximumdirect.net/eric/ReleaseKit@v0.2.0
    

    Consumers using a separately installed executable can update it with:

    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 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 describes temporary module metadata, older-tag retries, self-bootstrap, and separately installed tools.

COPYRIGHT | LICENSE | ATTRIBUTION