3.7 KiB
Configuration
ReleaseKit reads a JSON profile from <repository>/releasekit.json by default.
The repository directory defaults to the current directory. A relative profile
path is resolved from that repository directory; an absolute path is used as-is.
The current profile fields are:
| Field | Required | Behavior |
|---|---|---|
product |
Yes | Product name used by release operations. |
remote |
No | Selected Git remote; defaults to origin. |
checks |
No | Ordered additional child commands, each with an argument vector and optional environment map. |
build |
No | Optional main package, binary name, and selected GOOS/GOARCH target strings. |
delivery |
No | Optional Gitea base_url, owner, repository, and token_env settings for tagged-source delivery. |
Each check requires a nonempty args array whose first element names the
executable. Arguments are passed directly to the child process; ReleaseKit does
not parse a shell command string. Select a shell explicitly when a check needs
shell syntax. Each env map overlays the current environment for that child.
The overlay does not modify the ReleaseKit process environment.
Unknown fields are rejected so a setting cannot be silently ignored. The
build object contains main_package, binary_name, and targets. A selected
target requires the package and binary name; each target is written as one
GOOS/GOARCH pair. An omitted or empty target list means no binary work.
The delivery object contains base_url, owner, repository, and optional
token_env. Its values are required when running deliver, but credentials are
not required for check, publish, or build. token_env names the
environment variable containing the Gitea token; it defaults to
RELEASEKIT_GITEA_TOKEN. The CLI reads this variable only for deliver and
passes its value explicitly to the library operation.
The check and publish commands always run
go test -mod=readonly -count=1 ./... with Go module and toolchain network
access disabled. They then run each configured checks command once, in order,
as an additional product check. Selected-target builds run after both. Do not
repeat the standard suite in checks; doing so runs it twice. The build
command uses the selected build settings and writes binaries to dist unless
--output selects another path.
The deliver command uses the delivery destination and token. By default it
passes selected targets to the delivery facade, which builds tagged-source
artifacts into temporary storage and removes them when delivery returns. An
absent build object or an empty target set selects page-only delivery. Use
build --output DIR followed by deliver --assets DIR when artifacts must be
retained for retries or when build and delivery credentials need separate
invocations. Ordinary deliver does not download application dependencies or
change the checkout.
ci-deliver uses the same profile after preparing the selected tag in the
checkout. It checks out the tag only after its peeled commit matches the
provider-supplied commit ID, then loads the profile and validates delivery
settings and credentials. It runs go mod download only when the profile has
selected build targets; source-only delivery does not need application
dependencies. This preparation may access the network and may update
go.sum. The command takes CI values as arguments, so profile settings remain
independent of Woodpecker environment variable names. See the
CLI contract for the invocation and exit statuses.
ReleaseKit's source-only profile is releasekit.json. See the source-only profile and binary profile. The CLI contract lists the currently available command.