Files
ReleaseKit/docs/config.md

2.8 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, then either builds selected tagged-source targets into temporary storage or loads verified assets from the directory selected by --assets. An absent build object or an empty target set selects page-only delivery.

ReleaseKit's source-only profile is releasekit.json. See the source-only profile and binary profile. The CLI contract lists the currently available command.