Skip to content

feat: packaging + signed release pipeline; v0.1.0 quickstart - #9

Merged
prashar32 merged 1 commit into
mainfrom
feat/step-11-packaging
May 30, 2026
Merged

feat: packaging + signed release pipeline; v0.1.0 quickstart#9
prashar32 merged 1 commit into
mainfrom
feat/step-11-packaging

Conversation

@prashar32

@prashar32 prashar32 commented May 30, 2026

Copy link
Copy Markdown
Owner

What & why

The packaging finish line for v0.1 (§8 step 11): single binary, one-line docker run, and a signed release pipeline.

  • Dockerfile — cross-compiled (no QEMU tax) pure-Go static binary on distroless static, nonroot; /data volume. .dockerignore keeps the context lean and secret-free.
  • .goreleaser.yaml — multi-arch binaries (linux/darwin, amd64/arm64), archives, checksums, GitHub release notes; version stamped via ldflags.
  • release.yml (on v* tags) — GoReleaser binaries + release; multi-arch image to GHCR built from the main Dockerfile and cosign-signed keyless (OIDC). v* tags are admin-only via the tag ruleset.
  • Makefilebuild / test / vet / fmt / vuln / check / sdk-test / docker / run.
  • README — real 60-second quickstart (docker run → one env var → governed call with cost headers → 402 on budget); release badge.
  • CHANGELOG0.1.0 section.

Definition of done (v0.1) — all met

  • Zero-code adoption via one env var (proxy) ✓
  • Governor hard-stops every budget ✓
  • A SIGKILL'd run resumes from its checkpoint ✓
  • Steps/tools/tokens/cost visible locally and exportable as OTel ✓
  • Side-effecting actions require approval ✓
  • Nothing phones home ✓

Verification

  • go test -race ./..., Python SDK suite, vet, gofmt all green.
  • make build stamps version via ldflags. (Docker image + cosign run on the v* tag.)

v0.1.0 is tagged separately after this merges (tagging triggers the signed release build + GHCR image)

The single-binary, one-line docker run finish for v0.1.

- Dockerfile: cross-compiled (no QEMU tax), pure-Go static binary on
  distroless static nonroot; /data volume; runs as 65532. .dockerignore keeps
  the build context lean and secret-free.
- .goreleaser.yaml: multi-arch (linux/darwin, amd64/arm64) binaries, archives,
  checksums; GitHub release notes from conventional commits; version stamped
  into internal/version via ldflags.
- .github/workflows/release.yml (on v* tags): GoReleaser binaries + release;
  multi-arch image to GHCR built from the main Dockerfile and cosign-signed
  keyless via OIDC (id-token write). v* tags are admin-only (tag ruleset).
- Makefile: build/test/vet/fmt/vuln/check/sdk-test/docker/run targets.
- README: real 60-second quickstart (docker run -> one env var -> governed
  call with cost headers -> 402 on budget); release badge.
- CHANGELOG: cut the 0.1.0 section.

Definition of done (v0.1) met: zero-code adoption via one env var; the governor
hard-stops every budget; a SIGKILL'd run resumes from its checkpoint; steps/
tools/tokens/cost are visible locally and exportable as OTel; side effects
require approval; nothing phones home.
@prashar32
prashar32 merged commit c984fcf into main May 30, 2026
3 checks passed
@prashar32
prashar32 deleted the feat/step-11-packaging branch May 30, 2026 18:39
@prashar32 prashar32 changed the title feat: packaging + signed release pipeline; v0.1.0 quickstart (step 11) feat: packaging + signed release pipeline; v0.1.0 quickstart May 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant