66 lines
3.7 KiB
Markdown
66 lines
3.7 KiB
Markdown
# 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](cli.md) for the invocation and exit statuses.
|
|
|
|
ReleaseKit's source-only profile is
|
|
[releasekit.json](../releasekit.json).
|
|
See the [source-only profile](../examples/releasekit.json) and
|
|
[binary profile](../examples/releasekit-binary.json). The
|
|
[CLI contract](cli.md) lists the currently available command.
|