diff --git a/AGENTS.md b/AGENTS.md index 4f3e66e8..23f0e734 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -32,3 +32,8 @@ - E2E tests using Ginkgo/Gomega framework - Mock servers in `/test/e2e/mock/` - Run: `make e2e` or `make alltest` + +## Agent Runbooks + +Operational procedures for agents are in `doc/agents/`: +- `doc/agents/release.md` - Release process diff --git a/doc/agents/release.md b/doc/agents/release.md new file mode 100644 index 00000000..d8ec6267 --- /dev/null +++ b/doc/agents/release.md @@ -0,0 +1,80 @@ +# Release Process + +## 1. Update Release Notes + +Edit `Release.md` in the project root with the changes for this version: + +```markdown +## Features +* ... + +## Improvements +* ... + +## Fixes +* ... +``` + +This file is used by GoReleaser as the GitHub Release body. + +## 2. Bump Version + +Update the version string in `pkg/util/version/version.go`: + +```go +var version = "0.X.0" +``` + +Commit and push to `dev`: + +```bash +git add pkg/util/version/version.go Release.md +git commit -m "bump version to vX.Y.Z" +git push origin dev +``` + +## 3. Merge dev → master + +Create a PR from `dev` to `master`: + +```bash +gh pr create --base master --head dev --title "bump version" +``` + +Wait for CI to pass, then merge using **merge commit** (not squash). + +## 4. Tag the Release + +```bash +git checkout master +git pull origin master +git tag -a vX.Y.Z -m "bump version" +git push origin vX.Y.Z +``` + +## 5. Trigger GoReleaser + +Manually trigger the `goreleaser` workflow in GitHub Actions: + +```bash +gh workflow run goreleaser --ref master +``` + +GoReleaser will: +1. Run `package.sh` to cross-compile all platforms and create archives +2. Create a GitHub Release with all packages, using `Release.md` as release notes + +## Key Files + +| File | Purpose | +|------|---------| +| `pkg/util/version/version.go` | Version string | +| `Release.md` | Release notes (read by GoReleaser) | +| `.goreleaser.yml` | GoReleaser config | +| `package.sh` | Cross-compile and packaging script | +| `.github/workflows/goreleaser.yml` | GitHub Actions workflow (manual trigger) | + +## Versioning + +- Minor release: `v0.X.0` +- Patch release: `v0.X.Y` (e.g., `v0.62.1`)