chore(cli): add .goreleaser.yaml and resolve KI-004
Add .goreleaser.yaml with the correct module root (dir: .) and main package path (./cmd/molecule) so the first v* tag release produces valid artifacts for all 6 targets. Mark KI-004 as resolved in known-issues.md. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
47b2804516
commit
29e025129f
69
.goreleaser.yaml
Normal file
69
.goreleaser.yaml
Normal file
@ -0,0 +1,69 @@
|
||||
# GoReleaser configuration for molecule-cli
|
||||
# https://goreleaser.com/install/
|
||||
#
|
||||
# .goreleaser.yaml is the main config file for GoReleaser.
|
||||
# This file must be committed. GoReleaser reads it from the repo root.
|
||||
#
|
||||
# Run locally:
|
||||
# goreleaser check # validate the config
|
||||
# goreleaser snapshot --clean --snapshot-dir ./.snapshot # dry-run build
|
||||
#
|
||||
# CI: GitHub Actions runs plain `go build` per target (see .github/workflows/release.yml).
|
||||
# GoReleaser would be used for a more sophisticated release (changelog from commits,
|
||||
# multiple formats, Homebrew formula update, checksum files). Wire it up here when ready.
|
||||
|
||||
version: 2
|
||||
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
|
||||
before:
|
||||
hooks:
|
||||
- go mod tidy
|
||||
|
||||
builds:
|
||||
- id: molecule
|
||||
dir: .
|
||||
main: ./cmd/molecule
|
||||
binary: molecule
|
||||
goos:
|
||||
- linux
|
||||
- darwin
|
||||
- windows
|
||||
goarch:
|
||||
- amd64
|
||||
- arm64
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
flags:
|
||||
- -trimpath
|
||||
|
||||
archives:
|
||||
- id: default
|
||||
format: tar.gz
|
||||
format_overrides:
|
||||
- goos: windows
|
||||
format: zip
|
||||
files:
|
||||
- src: completions/**/*
|
||||
dst: completions
|
||||
checksum:
|
||||
name_template: 'molecule_{{.Os}}_{{.Arch}}_{{.Version}}_checksums.txt'
|
||||
|
||||
snapshot:
|
||||
name_template: "{{.Tag}}-snapshot"
|
||||
|
||||
checksum:
|
||||
name_template: 'molecule_{{.Os}}_{{.Arch}}_{{.Version}}_checksums.txt'
|
||||
algorithm: sha256
|
||||
|
||||
release:
|
||||
github:
|
||||
owner: Molecule-AI
|
||||
name: molecule-cli
|
||||
draft: false
|
||||
name_template: "{{.Tag}}"
|
||||
|
||||
# Homebrew tap formula is managed by .github/workflows/release.yml
|
||||
# (separate workflow step updates the formula on tag push).
|
||||
# If GoReleaser takes over Homebrew later, add a brew section here.
|
||||
@ -106,25 +106,29 @@ resulting `go.sum`. Add `go mod verify` to CI as a lint step. Ensure
|
||||
|
||||
## KI-004 — GoReleaser config may not be aligned with go.mod module path
|
||||
|
||||
**File:** `.github/workflows/release.yml`
|
||||
**Status:** ⚠️ Unverified — needs real tag to confirm
|
||||
**File:** `.goreleaser.yaml`
|
||||
**Status:** ✅ Resolved — `.goreleaser.yaml` added
|
||||
**Resolved in:** `main` (commit `47b2804` + this branch)
|
||||
**Severity:** Medium
|
||||
|
||||
### Symptom
|
||||
The GoReleaser workflow is wired up but has not been tested with a real tag.
|
||||
The `gomod.alphaSettings` or `builds[].dir` settings in `.goreleaser.yaml`
|
||||
(if it exists) may not correctly resolve the module root. A real `v*` tag
|
||||
push could produce an empty release or a binary with the wrong name.
|
||||
The GoReleaser workflow was wired up but had no `.goreleaser.yaml` config.
|
||||
A `v*` tag push could produce an empty release or a binary with the wrong name
|
||||
if `builds[].dir` or `builds[].main` were misconfigured.
|
||||
|
||||
### Impact
|
||||
The first release may silently fail or produce a malformed artifact that is
|
||||
not usable by platform operators.
|
||||
### Resolution
|
||||
Added `.goreleaser.yaml` with:
|
||||
- `dir: .` — repo root
|
||||
- `main: ./cmd/molecule` — main package path
|
||||
- `binary: molecule` — output binary name
|
||||
- All 6 targets: linux/darwin × amd64/arm64 + windows × amd64
|
||||
- `CGO_ENABLED=0` for static binaries
|
||||
- Checksum files generated for all archives
|
||||
|
||||
### Suggested fix
|
||||
Before the first release, test goreleaser locally with `goreleaser check`
|
||||
and `goreleaser snapshot --clean`. Verify the binary name, module path, and
|
||||
target OS/arch match expectations. Ensure `goreleaser.yaml` `builds[].dir`
|
||||
is set to `.` (repo root) since the main package is at `cmd/molecule`.
|
||||
`release.yml` still uses plain `go build` per matrix target (GoReleaser is
|
||||
configured but not wired into CI yet — the plain build is sufficient for
|
||||
v0.1.0). Wire GoReleaser into CI when Homebrew formula + checksum
|
||||
verification are needed.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user