Build selected targets with version injection

This commit is contained in:
2026-10-05 19:20:58 +00:00
parent c83313b3b9
commit 5d6a6d10bd
12 changed files with 927 additions and 34 deletions

View File

@@ -1,7 +1,6 @@
# ReleaseKit staged implementation plan
Status: Proposed. All stages are pending; this document introduces no implemented
features or published contracts.
Status: In progress. Stages 1–10 are complete; later stages remain pending.
Date: 2026-10-05
@@ -683,7 +682,7 @@ ReleaseKit release was published.
## Stage 10: Build selected targets with shared version injection
Status: Pending. Depends on Stage 9.
Status: Complete. Depends on Stage 9.
1. Implement public build values and internal build execution using the fixed
flags, version symbol, filename convention, and prepared Go environment.
@@ -702,6 +701,17 @@ does not select the smoke host. Empty targets perform no build or smoke test;
missing main packages, build failures, incorrect version output, unsafe binary
names, and cancellation fail with useful partial results.
Evidence: `releasekit.Build` and `internal/build` compile Linux amd64, Linux
arm64, and macOS arm64 artifacts using the shared linker symbol and prepared
local Go environment. The consumer fixture imports `buildinfo` and reports the
injected version through its `version` invocation. Results retain the observed
source commit, compiler identity, normalized targets, absolute paths, filenames,
and SHA-256 digests. Tests cover host selection despite ambient cross-target
variables, empty target sets, existing output preservation, partial target
failure, missing packages, incorrect version output, unsafe names, and
cancellation with completed artifacts retained. No byte-reproducibility or
cross-platform execution guarantee is added.
## Stage 11: Integrate candidate builds and artifact command
Status: Pending. Depends on Stage 10.