Upgrade ReleaseKit and align release profiles with SSH
This commit is contained in:
@@ -24,9 +24,10 @@ core-only, ConfigKit-only, and composed applications.
|
|||||||
## Go compatibility
|
## Go compatibility
|
||||||
|
|
||||||
All three modules declare a consumer minimum of Go 1.26.0. The root module also
|
All three modules declare a consumer minimum of Go 1.26.0. The root module also
|
||||||
selects ReleaseKit v0.4.2 as a Go tool, which makes that tool's module graph part
|
selects ReleaseKit v0.8.0 (`go.maximumdirect.net/releasekit`) as a Go tool, which
|
||||||
of the root consumer module requirements even though production packages do not
|
makes that tool's module graph part of the root consumer module requirements
|
||||||
import ReleaseKit. The [release policy](../policy/release.md#consumer-minimum-and-release-toolchain)
|
even though production packages do not import ReleaseKit. The
|
||||||
|
[release policy](../policy/release.md#consumer-minimum-and-release-toolchain)
|
||||||
defines the support assumption. Maintainers use Go 1.26.8 for validation and
|
defines the support assumption. Maintainers use Go 1.26.8 for validation and
|
||||||
publication; see the [release procedure](../release.md#release-toolchain).
|
publication; see the [release procedure](../release.md#release-toolchain).
|
||||||
|
|
||||||
|
|||||||
@@ -139,16 +139,16 @@ License and notices: [CC BY-SA 4.0](licenses/CC-BY-SA-4.0.txt) |
|
|||||||
|
|
||||||
## ReleaseKit
|
## ReleaseKit
|
||||||
|
|
||||||
Selected module: `gitea.maximumdirect.net/eric/ReleaseKit` at `v0.4.2` (selected Go tool; not a runtime import).
|
Selected module: `go.maximumdirect.net/releasekit` at `v0.8.0` (selected Go tool; not a runtime import).
|
||||||
|
|
||||||
Copyright (C) 2026 Eric Rakestraw
|
Copyright (C) 2026 Eric Rakestraw
|
||||||
|
|
||||||
SPDX-License-Identifier: LGPL-3.0-or-later
|
SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
|
||||||
License and notices: [LGPL v3.0](../../LICENSE) |
|
License and notices: [LGPL v3.0](../../LICENSE) |
|
||||||
[LICENSE](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/7d033c5ca1c95aec7db9690293638a0a1ac887b8/LICENSE).
|
[LICENSE](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/LICENSE).
|
||||||
|
|
||||||
[Source](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/7d033c5ca1c95aec7db9690293638a0a1ac887b8).
|
[Source](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f).
|
||||||
|
|
||||||
## Goldmark
|
## Goldmark
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ additional release requirements.
|
|||||||
CommandKit independently versions three source-only Go modules: the root core,
|
CommandKit independently versions three source-only Go modules: the root core,
|
||||||
`integrations/ckconfig`, and `integrations/ckprompt`. Standard CLI behavior is
|
`integrations/ckconfig`, and `integrations/ckprompt`. Standard CLI behavior is
|
||||||
exposed by consuming applications; CommandKit does not declare binary
|
exposed by consuming applications; CommandKit does not declare binary
|
||||||
deliverables or a cross-platform build matrix. ReleaseKit v0.4.2 is selected as
|
deliverables or a cross-platform build matrix. ReleaseKit v0.8.0 is selected as
|
||||||
the maintainer publication tool. The [release procedure](../release.md) owns
|
the maintainer publication tool. The [release procedure](../release.md) owns
|
||||||
the selected-module workflow, release order, and repository-specific commands;
|
the selected-module workflow, release order, and repository-specific commands;
|
||||||
the integration adds no application command family or runtime ReleaseKit
|
the integration adds no application command family or runtime ReleaseKit
|
||||||
|
|||||||
@@ -15,17 +15,18 @@ release runs only the root module's default suite; it need not run suites for
|
|||||||
independently released integrations.
|
independently released integrations.
|
||||||
|
|
||||||
Use branch `main`, remote `origin`, and expected effective push endpoint
|
Use branch `main`, remote `origin`, and expected effective push endpoint
|
||||||
`https://gitea.maximumdirect.net/eric/CommandKit.git`. The selected module profile
|
`ssh://git@forge.maximumdirect.net:22222/base-layer/commandkit.git`. The selected
|
||||||
enforces the endpoint. The maintainer needs the selected
|
module profile enforces the endpoint. The maintainer needs the selected
|
||||||
[release toolchain](#release-toolchain), Git push access, and a POSIX shell.
|
[release toolchain](#release-toolchain), Git push access, and a POSIX shell.
|
||||||
This procedure follows the [release policy](policy/release.md); release-note
|
This procedure follows the [release policy](policy/release.md); release-note
|
||||||
footers follow the [OSS discoverability policy](policy/oss.md#discoverability).
|
footers follow the [OSS discoverability policy](policy/oss.md#discoverability).
|
||||||
|
|
||||||
ReleaseKit v0.4.2 owns candidate validation, publication guards, tag creation,
|
ReleaseKit v0.8.0 (`go.maximumdirect.net/releasekit`) owns candidate validation,
|
||||||
tag publication, and outcome reporting. Its pinned public contracts are the
|
publication guards, tag creation, tag publication, and outcome reporting.
|
||||||
[CLI reference](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/7d033c5ca1c95aec7db9690293638a0a1ac887b8/docs/cli.md),
|
Its pinned public contracts are the
|
||||||
[profile reference](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/7d033c5ca1c95aec7db9690293638a0a1ac887b8/docs/config.md),
|
[CLI reference](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/docs/cli.md),
|
||||||
and [publication guide](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/7d033c5ca1c95aec7db9690293638a0a1ac887b8/docs/consumers/publish.md).
|
[profile reference](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/docs/config.md),
|
||||||
|
and [publication guide](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/docs/consumers/publish.md).
|
||||||
The repository selects one default module suite per invocation. The launcher
|
The repository selects one default module suite per invocation. The launcher
|
||||||
bootstraps the native tool into ignored `.releasekit/` storage and delegates to
|
bootstraps the native tool into ignored `.releasekit/` storage and delegates to
|
||||||
its `publish` command.
|
its `publish` command.
|
||||||
@@ -73,7 +74,7 @@ All three release profiles explicitly select the repository-root `COPYRIGHT`,
|
|||||||
`LICENSE`, and `docs/oss/attribution.md` through `validation.shared_files`.
|
`LICENSE`, and `docs/oss/attribution.md` through `validation.shared_files`.
|
||||||
ReleaseKit requires these committed files to exist in the candidate even when
|
ReleaseKit requires these committed files to exist in the candidate even when
|
||||||
no optional file checks are enabled. The list does not enable content checks
|
no optional file checks are enabled. The list does not enable content checks
|
||||||
or expand Go validation scope; see the pinned [profile reference](https://gitea.maximumdirect.net/eric/ReleaseKit/src/commit/b96262eb0ce9c8f2eb3e948a5841db2b799bc91b/docs/config.md).
|
or expand Go validation scope; see the pinned [profile reference](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/docs/config.md).
|
||||||
|
|
||||||
Each integration also distributes its own `COPYRIGHT`, `LICENSE`, and
|
Each integration also distributes its own `COPYRIGHT`, `LICENSE`, and
|
||||||
`docs/oss/attribution.md`. These module-local materials are separate from the
|
`docs/oss/attribution.md`. These module-local materials are separate from the
|
||||||
@@ -121,14 +122,41 @@ proxy availability, or downstream installation.
|
|||||||
|
|
||||||
## Completion and ambiguous publication
|
## Completion and ambiguous publication
|
||||||
|
|
||||||
A successful push to the expected endpoint completes the source release. On an
|
A successful push to the expected endpoint completes the source release.
|
||||||
ambiguous result, use the exact endpoint, full tag, and annotated tag object
|
ReleaseKit also attempts to save private publication evidence under the
|
||||||
reported by that invocation. Confirm endpoint resolution has not changed, then
|
repository's Git common directory, shared by linked worktrees. It reports the
|
||||||
query only that exact tag ref. Compare the remote annotated tag-object ID with
|
saved record path or a recording warning separately from publication status;
|
||||||
the reported object: an exact match confirms publication, a different object is
|
a storage failure does not change publication status. Records can contain
|
||||||
a conflict, successful output without the ref proves absence at that endpoint,
|
credential-bearing endpoints. Retain them privately while recovery is needed
|
||||||
|
and remove them when their recovery value expires; retention is maintainer-owned.
|
||||||
|
|
||||||
|
On an ambiguous result, use the recovery command printed for that invocation's
|
||||||
|
saved record. To discover records and explicitly select the matching attempt,
|
||||||
|
the bootstrapped executable can also be used from the repository root:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./.releasekit/bin/releasekit publication-attempts --repo .
|
||||||
|
./.releasekit/bin/releasekit reconcile --record /absolute/path/to/attempt.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace the example record path with the saved path for the intended attempt.
|
||||||
|
Discovery lists local evidence without querying remotes or selecting an attempt.
|
||||||
|
Reconciliation observes the recorded endpoint, full tag, and tag object without
|
||||||
|
rerunning candidate validation or changing tags. It distinguishes confirmed
|
||||||
|
publication, current absence, conflict, and an unresolved observation. Current
|
||||||
|
absence does not prove that a version was never published. The pinned
|
||||||
|
[CLI reference](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/docs/cli.md#recover-a-saved-publication-attempt-or-discover-local-attempts)
|
||||||
|
owns recovery statuses and structured output; the
|
||||||
|
[publication guide](https://forge.maximumdirect.net/base-layer/releasekit/src/commit/23203f235cc414c4ffe0fd3941030eb0c9f9943f/docs/consumers/publish.md#retain-and-reconcile-publication-evidence)
|
||||||
|
describes record storage and recovery entry points.
|
||||||
|
|
||||||
|
If no usable record was saved, use the exact endpoint, full tag, and annotated
|
||||||
|
tag object reported by that invocation. Query only that exact tag ref at the
|
||||||
|
captured endpoint. An exact tag-object match confirms publication, a different
|
||||||
|
object is a conflict, successful output without the ref shows current absence,
|
||||||
and a failed query leaves the result unresolved. Do not infer the captured
|
and a failed query leaves the result unresolved. Do not infer the captured
|
||||||
endpoint's state from another remote or a rewritten URL.
|
endpoint's state from another remote or a rewritten URL. Resolve unknown
|
||||||
|
publication state before retrying.
|
||||||
|
|
||||||
ReleaseKit may retain a local tag after a failed push. Remove an unpublished
|
ReleaseKit may retain a local tag after a failed push. Remove an unpublished
|
||||||
local tag only after proving absence at the captured endpoint and confirming
|
local tag only after proving absence at the captured endpoint and confirming
|
||||||
|
|||||||
4
go.mod
4
go.mod
@@ -9,10 +9,10 @@ require (
|
|||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
gitea.maximumdirect.net/eric/ReleaseKit v0.4.2 // indirect
|
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/yuin/goldmark/v2 v2.1.6 // indirect
|
github.com/yuin/goldmark/v2 v2.1.6 // indirect
|
||||||
|
go.maximumdirect.net/releasekit v0.8.0 // indirect
|
||||||
golang.org/x/mod v0.40.0 // indirect
|
golang.org/x/mod v0.40.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
tool gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit
|
tool go.maximumdirect.net/releasekit/cmd/releasekit
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -1,5 +1,3 @@
|
|||||||
gitea.maximumdirect.net/eric/ReleaseKit v0.4.2 h1:P2eDQ29BgyYqHnaz5MV+vzOk7r3s8py2y9k8JISFtJ0=
|
|
||||||
gitea.maximumdirect.net/eric/ReleaseKit v0.4.2/go.mod h1:LVodqNQ3OIKv9NBq+fFeyMByd1lHY25YOmmpah/NaNI=
|
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||||
@@ -10,6 +8,8 @@ github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
|
|||||||
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
github.com/yuin/goldmark/v2 v2.1.6 h1:igy0q9JcqovoFXFx/XjtU8sHVhcUHavPj2sA3EoKJUE=
|
github.com/yuin/goldmark/v2 v2.1.6 h1:igy0q9JcqovoFXFx/XjtU8sHVhcUHavPj2sA3EoKJUE=
|
||||||
github.com/yuin/goldmark/v2 v2.1.6/go.mod h1:G6M4/qOFtfn01/o14BU1UR2Lo5N3S9Qo7xCuz/sHjGQ=
|
github.com/yuin/goldmark/v2 v2.1.6/go.mod h1:G6M4/qOFtfn01/o14BU1UR2Lo5N3S9Qo7xCuz/sHjGQ=
|
||||||
|
go.maximumdirect.net/releasekit v0.8.0 h1:hSaHPbUI7tAhnolfbu7UMj2fvmm9FGBY+jhkygdbxR0=
|
||||||
|
go.maximumdirect.net/releasekit v0.8.0/go.mod h1:QE4BLrAhVJTzi+/YTcVl21K/qZp9ojRLg5kuoy3Zb44=
|
||||||
go.yaml.in/yaml/v4 v4.0.0-rc.6 h1:1h7H1ohdUh93/FyE4YaDa1Zh64K6VVbjF4K6WUxMtH4=
|
go.yaml.in/yaml/v4 v4.0.0-rc.6 h1:1h7H1ohdUh93/FyE4YaDa1Zh64K6VVbjF4K6WUxMtH4=
|
||||||
go.yaml.in/yaml/v4 v4.0.0-rc.6/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
|
go.yaml.in/yaml/v4 v4.0.0-rc.6/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0=
|
||||||
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
|
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"product": "CommandKit ckconfig",
|
"product": "CommandKit ckconfig",
|
||||||
"module_dir": "integrations/ckconfig",
|
"module_dir": "integrations/ckconfig",
|
||||||
"remote": "origin",
|
"remote": "origin",
|
||||||
"expected_push_url": "https://gitea.maximumdirect.net/eric/CommandKit.git",
|
"expected_push_url": "ssh://git@forge.maximumdirect.net:22222/base-layer/commandkit.git",
|
||||||
"validation": {
|
"validation": {
|
||||||
"shared_files": [
|
"shared_files": [
|
||||||
"COPYRIGHT",
|
"COPYRIGHT",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"product": "CommandKit ckprompt",
|
"product": "CommandKit ckprompt",
|
||||||
"module_dir": "integrations/ckprompt",
|
"module_dir": "integrations/ckprompt",
|
||||||
"remote": "origin",
|
"remote": "origin",
|
||||||
"expected_push_url": "https://gitea.maximumdirect.net/eric/CommandKit.git",
|
"expected_push_url": "ssh://git@forge.maximumdirect.net:22222/base-layer/commandkit.git",
|
||||||
"validation": {
|
"validation": {
|
||||||
"shared_files": [
|
"shared_files": [
|
||||||
"COPYRIGHT",
|
"COPYRIGHT",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"product": "CommandKit",
|
"product": "CommandKit",
|
||||||
"module_dir": ".",
|
"module_dir": ".",
|
||||||
"remote": "origin",
|
"remote": "origin",
|
||||||
"expected_push_url": "https://gitea.maximumdirect.net/eric/CommandKit.git",
|
"expected_push_url": "ssh://git@forge.maximumdirect.net:22222/base-layer/commandkit.git",
|
||||||
"validation": {
|
"validation": {
|
||||||
"shared_files": [
|
"shared_files": [
|
||||||
"COPYRIGHT",
|
"COPYRIGHT",
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ GOTOOLCHAIN=local \
|
|||||||
go build \
|
go build \
|
||||||
-mod=readonly \
|
-mod=readonly \
|
||||||
-o "$commandkit_root/.releasekit/bin/releasekit" \
|
-o "$commandkit_root/.releasekit/bin/releasekit" \
|
||||||
gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit
|
go.maximumdirect.net/releasekit/cmd/releasekit
|
||||||
|
|
||||||
GOWORK=off GOTOOLCHAIN=local exec "$commandkit_root/.releasekit/bin/releasekit" publish \
|
GOWORK=off GOTOOLCHAIN=local exec "$commandkit_root/.releasekit/bin/releasekit" publish \
|
||||||
--repo "$commandkit_root" \
|
--repo "$commandkit_root" \
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
releasePackage = "gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit"
|
releasePackage = "go.maximumdirect.net/releasekit/cmd/releasekit"
|
||||||
releaseVersion = "v1.2.3-rc.1+local"
|
releaseVersion = "v1.2.3-rc.1+local"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user