39 lines
2.0 KiB
Markdown
39 lines
2.0 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 child commands, each with an argument vector and optional environment map. |
|
|
| `build` | No | Optional main package, binary name, and selected `GOOS/GOARCH` target strings. |
|
|
|
|
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 `check` and `publish` commands use `product`, `remote`, and `checks`, and
|
|
build selected targets after the single validation callback. If `checks` is
|
|
omitted or empty, it runs `go test -mod=readonly -count=1 ./...` with Go module
|
|
and toolchain network access disabled. If checks are configured, they replace
|
|
that default and run in order. The `build` command uses the selected build
|
|
settings and writes binaries to `dist` unless `--output` selects another path.
|
|
|
|
ReleaseKit's source-only publication 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.
|