Migrate ReleaseKit to the vanity module path and new Gitea host
This commit is contained in:
@@ -10,12 +10,14 @@ From the consumer module's root, select the ReleaseKit version to adopt:
|
||||
|
||||
```sh
|
||||
: "${RELEASEKIT_TOOL_VERSION:?Set the released ReleaseKit version to adopt}"
|
||||
go get -tool "gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@${RELEASEKIT_TOOL_VERSION}"
|
||||
go get -tool "go.maximumdirect.net/releasekit/cmd/releasekit@${RELEASEKIT_TOOL_VERSION}"
|
||||
go mod tidy
|
||||
go tool releasekit version
|
||||
```
|
||||
|
||||
Select a release that implements the API, profile, and workflow you are adopting.
|
||||
The vanity module path starts with v0.5.0. Versions through v0.4.2 declare the
|
||||
original module path and use their corresponding historical instructions.
|
||||
The module-release interface requires a release containing that feature;
|
||||
pre-feature versions through v0.3.0 use their corresponding historical interface.
|
||||
Go records the executable package in
|
||||
@@ -43,13 +45,47 @@ required imports and select the module version:
|
||||
|
||||
```sh
|
||||
: "${RELEASEKIT_TOOL_VERSION:?Set the released ReleaseKit version to adopt}"
|
||||
go get "gitea.maximumdirect.net/eric/ReleaseKit@${RELEASEKIT_TOOL_VERSION}"
|
||||
go get "go.maximumdirect.net/releasekit@${RELEASEKIT_TOOL_VERSION}"
|
||||
go mod tidy
|
||||
```
|
||||
|
||||
API consumers can also register the CLI with `go get -tool` as above. Both uses
|
||||
share the module-selected ReleaseKit version.
|
||||
|
||||
## Migrating from the original module path
|
||||
|
||||
Starting with v0.5.0, ReleaseKit's module is `go.maximumdirect.net/releasekit`.
|
||||
Earlier releases declare `gitea.maximumdirect.net/eric/ReleaseKit`. The migration
|
||||
is a direct cutover with the existing facade roles and command behavior.
|
||||
|
||||
For API consumers, update imports of the root facade and `buildinfo` to
|
||||
`go.maximumdirect.net/releasekit` and
|
||||
`go.maximumdirect.net/releasekit/buildinfo`, including generated code and tests.
|
||||
Select v0.5.0 or a later compatible release using the package-dependency command
|
||||
above. Packages imported through the old and new paths have distinct Go
|
||||
identities; coordinate updates in packages that exchange ReleaseKit facade
|
||||
types. Builders and applications using `buildinfo` should adopt the new path
|
||||
together so version injection addresses the runtime implementation they use.
|
||||
|
||||
For CLI tool consumers, remove the old tool declaration before registering the
|
||||
new CLI package with the tool-dependency command above:
|
||||
|
||||
```sh
|
||||
go mod edit -droptool=gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit
|
||||
```
|
||||
|
||||
Update copied release launchers and Woodpecker workflows so their
|
||||
`releasekit_module` value is `go.maximumdirect.net/releasekit`. Use the maintained
|
||||
examples matching the selected tool version. Run `go mod tidy` after updating
|
||||
imports and tool declarations, review any old-path dependencies retained
|
||||
transitively, and commit the resulting module files with the workflow changes.
|
||||
|
||||
Existing consumer tags retain their recorded module files, tool selection, and
|
||||
matching workflows for retries. Apply these migration steps to new consumer
|
||||
revisions. Source repository and hosted release URLs use
|
||||
`https://forge.maximumdirect.net/base-layer/releasekit`; the vanity path is the
|
||||
Go module identity. The Go consumer minimum remains 1.26.0.
|
||||
|
||||
## CI adoption
|
||||
|
||||
The maintained [consumer tag-delivery workflow](delivery.md#woodpecker-tag-workflows)
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
releasekit "gitea.maximumdirect.net/eric/ReleaseKit"
|
||||
releasekit "go.maximumdirect.net/releasekit"
|
||||
)
|
||||
|
||||
func build(ctx context.Context) error {
|
||||
|
||||
@@ -244,7 +244,7 @@ and application artifact compilation retain their separate environments.
|
||||
The normal Go module and build caches are sufficient. Cache mounts may be added
|
||||
as deployment configuration when they help the runner; they are not needed by
|
||||
the template. A separately installed executable can be installed with
|
||||
`go install gitea.maximumdirect.net/eric/ReleaseKit/cmd/releasekit@PIN`, then run
|
||||
`go install go.maximumdirect.net/releasekit/cmd/releasekit@PIN`, then run
|
||||
with the same arguments. With the event object available in the CI checkout,
|
||||
resolve it to its source commit before invocation:
|
||||
|
||||
@@ -286,7 +286,9 @@ describes these checks.
|
||||
|
||||
To isolate a public ReleaseKit download from application settings and the
|
||||
existing module cache, run the following with a compatible local Go toolchain.
|
||||
Replace `v0.2.0` with the affected version. This diagnostic accesses the public
|
||||
Replace `v0.5.0` with the affected vanity-path version. For an earlier release,
|
||||
use its original `gitea.maximumdirect.net/eric/ReleaseKit` module path instead.
|
||||
This diagnostic accesses the public
|
||||
Go proxy and checksum database and retains its temporary directory for inspection.
|
||||
|
||||
```sh
|
||||
@@ -298,7 +300,7 @@ Go proxy and checksum database and retains its temporary directory for inspectio
|
||||
GOPRIVATE= GONOPROXY= GONOSUMDB= \
|
||||
GOPROXY=https://proxy.golang.org GOSUMDB=sum.golang.org \
|
||||
GOMODCACHE="$checksum_dir/modules" \
|
||||
go mod download -json gitea.maximumdirect.net/eric/ReleaseKit@v0.2.0
|
||||
go mod download -json go.maximumdirect.net/releasekit@v0.5.0
|
||||
)
|
||||
```
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Applications can read their embedded version through the public `buildinfo`
|
||||
package:
|
||||
|
||||
```go
|
||||
import "gitea.maximumdirect.net/eric/ReleaseKit/buildinfo"
|
||||
import "go.maximumdirect.net/releasekit/buildinfo"
|
||||
|
||||
version := buildinfo.Version()
|
||||
```
|
||||
|
||||
@@ -24,7 +24,7 @@ Go declarations and GoDoc remain the owners of exact exported contracts.
|
||||
|
||||
## Module and dependencies
|
||||
|
||||
The module is `gitea.maximumdirect.net/eric/ReleaseKit`, with Go language
|
||||
The module is `go.maximumdirect.net/releasekit`, with Go language
|
||||
version `1.26.0`. `go.mod` requires `golang.org/x/mod` and Goldmark for internal
|
||||
validation; public facades do not expose either dependency. `go list ./...`
|
||||
reports these implemented packages:
|
||||
|
||||
@@ -5,8 +5,10 @@ the complete checked-in release note. The page is delivered asynchronously by
|
||||
the prepared [Woodpecker workflow](../examples/woodpecker/releasekit-source-delivery.yml);
|
||||
it is not a source-release completion check and carries no binary assets. The
|
||||
authoritative repository is `origin` at
|
||||
`https://gitea.maximumdirect.net/eric/ReleaseKit.git`, and the release branch
|
||||
is `main`. A release completes when the intended annotated tag is successfully
|
||||
`ssh://git@forge.maximumdirect.net:22222/base-layer/releasekit.git`, and the release
|
||||
branch is `main`. The hosted Gitea destination is
|
||||
`https://forge.maximumdirect.net/base-layer/releasekit`. A release completes
|
||||
when the intended annotated tag is successfully
|
||||
pushed, or when one exact-object recovery query confirms that the push
|
||||
succeeded. CI and consumer installation are not completion checks.
|
||||
|
||||
@@ -43,9 +45,9 @@ the exact version. Summarize the change and any compatibility or upgrade impact.
|
||||
End the note with the three license links at the immutable source tag:
|
||||
|
||||
```markdown
|
||||
[COPYRIGHT](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/vX.Y.Z/COPYRIGHT) |
|
||||
[LICENSE](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/vX.Y.Z/LICENSE) |
|
||||
[ATTRIBUTION](https://gitea.maximumdirect.net/eric/ReleaseKit/src/tag/vX.Y.Z/docs/oss/attribution.md)
|
||||
[COPYRIGHT](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/vX.Y.Z/COPYRIGHT) |
|
||||
[LICENSE](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/vX.Y.Z/LICENSE) |
|
||||
[ATTRIBUTION](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/vX.Y.Z/docs/oss/attribution.md)
|
||||
```
|
||||
|
||||
Replace every `vX.Y.Z` with the selected version. These are links to the same
|
||||
|
||||
59
docs/releases/v0.5.0.md
Normal file
59
docs/releases/v0.5.0.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# ReleaseKit v0.5.0
|
||||
|
||||
## Summary
|
||||
|
||||
ReleaseKit adopts `go.maximumdirect.net/releasekit` as its Go module identifier.
|
||||
The vanity path resolves to the Gitea repository at
|
||||
`https://forge.maximumdirect.net/base-layer/releasekit`.
|
||||
|
||||
## Changes
|
||||
|
||||
- The orchestration facade is `go.maximumdirect.net/releasekit`, the runtime
|
||||
facade is `go.maximumdirect.net/releasekit/buildinfo`, and the executable
|
||||
package is `go.maximumdirect.net/releasekit/cmd/releasekit`.
|
||||
- Imports, version-injection linkage, compiled API checks, consumer fixtures,
|
||||
and maintained release launchers and Woodpecker workflows use the new module
|
||||
identity.
|
||||
- ReleaseKit's hosted-page delivery profile and maintainer guidance use Gitea
|
||||
at `forge.maximumdirect.net`, owner `base-layer`, repository `releasekit`.
|
||||
|
||||
## Compatibility
|
||||
|
||||
This pre-1.0 minor release changes package import paths and requires consumer
|
||||
migration. Facade roles, command behavior, configuration formats, and the Go
|
||||
1.26.0 consumer minimum retain their existing definitions. The runtime version
|
||||
accessor and builder use the new module's runtime implementation for injection.
|
||||
|
||||
Packages imported through different module paths have distinct Go identities.
|
||||
Coordinate import changes in packages that exchange ReleaseKit facade types,
|
||||
and update builders and applications using `buildinfo` together.
|
||||
|
||||
Published versions through v0.4.2 retain the original
|
||||
`gitea.maximumdirect.net/eric/ReleaseKit` module declaration. Those versions
|
||||
continue to describe their original source and use their matching historical
|
||||
instructions. A vanity-path download of an older tag does not change its module
|
||||
declaration.
|
||||
|
||||
## Upgrade guidance
|
||||
|
||||
1. Update application, library, test, and generated imports for the root facade
|
||||
and `buildinfo` to the new paths. Select v0.5.0 or a later compatible release
|
||||
using the [adoption guide](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.5.0/docs/consumers/adoption.md#migrating-from-the-original-module-path).
|
||||
2. For CLI tool dependencies, remove the old tool declaration and register
|
||||
`go.maximumdirect.net/releasekit/cmd/releasekit` at the selected version.
|
||||
3. Update copied launchers and Woodpecker workflows together with the module
|
||||
selection. The maintained examples use
|
||||
`releasekit_module=go.maximumdirect.net/releasekit`.
|
||||
4. Run `go mod tidy`, review any old-path dependencies retained transitively,
|
||||
and commit module and workflow changes together. Keep existing consumer tags
|
||||
intact; their delivery retries use their recorded module files and matching
|
||||
workflows.
|
||||
|
||||
Source repository and hosted release URLs use the Gitea host; Go imports and
|
||||
tool dependencies use the vanity path. ReleaseKit's source publication and
|
||||
hosted-page delivery retain their separate outcomes under the
|
||||
[maintainer procedure](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.5.0/docs/release.md).
|
||||
|
||||
[COPYRIGHT](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.5.0/COPYRIGHT) |
|
||||
[LICENSE](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.5.0/LICENSE) |
|
||||
[ATTRIBUTION](https://forge.maximumdirect.net/base-layer/releasekit/src/tag/v0.5.0/docs/oss/attribution.md)
|
||||
@@ -1,6 +1,6 @@
|
||||
# Roadmap: migrate to the ReleaseKit vanity module path
|
||||
|
||||
Status: proposed; implementation has not started.
|
||||
Status: implementation in place; final verification and completion review underway.
|
||||
|
||||
## Objective
|
||||
|
||||
@@ -10,7 +10,7 @@ Prepare the change for v0.5.0, with migration instructions for existing consumer
|
||||
The [release policy](../policy/release.md#versioning-and-compatibility) governs
|
||||
version selection and compatibility.
|
||||
|
||||
## Current baseline
|
||||
## Baseline at start of migration
|
||||
|
||||
The baseline is v0.4.2, commit
|
||||
`7d033c5ca1c95aec7db9690293638a0a1ac887b8`.
|
||||
|
||||
Reference in New Issue
Block a user