gogcli/docs/RELEASING.md
Peter Steinberger 80533f76b6
Some checks failed
ci / test (push) Has been cancelled
docs: add releasing playbook
2025-12-12 17:08:22 +00:00

2.2 KiB
Raw Permalink Blame History

summary
Release checklist for gogcli (GitHub release + Homebrew tap)

Releasing gogcli

This playbook mirrors the Homebrew + GitHub flow used in ../camsnap.

Assumptions:

  • Repo: steipete/gogcli
  • Tap repo: ../homebrew-tap (tap: steipete/tap)
  • Homebrew formula name: gogcli (installs the gog binary)

0) Prereqs

  • Clean working tree on main.
  • Go toolchain installed (Go version comes from go.mod).
  • make works locally.
  • Access to the tap repo (e.g. steipete/homebrew-tap).

1) Verify build is green

make ci

2) Update changelog

  • Add a new section to CHANGELOG.md for the version youre releasing.

Example heading:

  • ## 0.1.0 - 2025-12-12

3) Tag & push

git checkout main
git pull

# commit changelog + any release tweaks
git commit -am "release: vX.Y.Z"

git tag -a vX.Y.Z -m "Release X.Y.Z"
git push origin main --tags

4) Update (or add) the Homebrew formula

In the tap repo (assumed sibling at ../homebrew-tap), create/update Formula/gogcli.rb.

Recommended formula shape (build-from-source, no binary assets needed):

  • version "X.Y.Z"
  • url "https://github.com/steipete/gogcli/archive/refs/tags/vX.Y.Z.tar.gz"
  • sha256 "<sha256>"
  • depends_on "go" => :build
  • Build:
    • system "go", "build", *std_go_args(ldflags: "-s -w"), "./cmd/gog"

Compute the SHA256 for the tag tarball:

curl -L -o /tmp/gogcli.tar.gz https://github.com/steipete/gogcli/archive/refs/tags/vX.Y.Z.tar.gz
shasum -a 256 /tmp/gogcli.tar.gz

Commit + push in the tap repo:

cd ../homebrew-tap
git add Formula/gogcli.rb
git commit -m "gogcli vX.Y.Z"
git push origin main

5) Sanity-check install from tap

brew update
brew uninstall gogcli || true
brew untap steipete/tap || true
brew tap steipete/tap
brew install steipete/tap/gogcli
brew test steipete/tap/gogcli

gog --help

6) Create GitHub Release

  • Create a GitHub Release for tag vX.Y.Z.
  • Title: gogcli X.Y.Z (or gog X.Y.Z if you prefer the binary name).
  • Body: copy the bullets from CHANGELOG.md for that version.

Notes

  • gog currently does not print a version string; use tags + changelog as the source of truth.
  • If you later add gog version, update this doc to validate gog version post-install.