Skip to content

Release engineering: script, package managers, completions, docs#171

Merged
jeremy merged 6 commits intomainfrom
releng
Feb 28, 2026
Merged

Release engineering: script, package managers, completions, docs#171
jeremy merged 6 commits intomainfrom
releng

Conversation

@jeremy
Copy link
Member

@jeremy jeremy commented Feb 28, 2026

What

End-to-end release infrastructure for v0.2.0 and beyond.

Release orchestration:

  • scripts/release.sh — validates semver, main branch, clean tree, remote sync, no replace directives, runs full pre-flight, creates annotated tag, pushes to trigger release workflow
  • make release VERSION=0.2.0 (with DRY_RUN=1 support)
  • make release-check — full pre-flight gate (check + replace-check + vuln + race-test)
  • make replace-check — guards against shipping local replace directives

Package manager distribution:

  • Homebrew cask via basecamp/homebrew-tap Casks/
  • Scoop manifest via basecamp/homebrew-tap root (no directory: — fixes discovery)
  • AUR basecamp-bin with shell completions installed to standard paths
  • Release workflow updated: app token scoped to homebrew-tap, HOMEBREW_TAP_TOKEN + AUR_KEY passed to GoReleaser

Shell completions bundled in release archives (bash, zsh, fish) via GoReleaser before hooks.

Docker release channel removed (separate PR #170 — binary CLI with browser OAuth, keyring, and shell completions doesn't work in containers; eliminates QEMU build time and hang risk).

Docs:

  • RELEASING.md — maintainer runbook (quick release, dry run, pipeline, versioning, CI secrets, AUR setup, distribution channels)
  • .github/CODEOWNERS@basecamp/sip owns release infra
  • .github/pull_request_template.md — minimal What/Why/Testing
  • install.md + README.md aligned with working install matrix

Why

Two releases shipped (v0.1.0, v0.1.1) with manual git tag && git push. Before v0.2.0: guardrails, package manager distribution, maintainer docs.

Testing

  • goreleaser check passes
  • make replace-check passes
  • AUR basecamp-bin account created, AUR_KEY secret configured
  • make release VERSION=0.2.0 DRY_RUN=1 (after merge)
  • First real release validates Homebrew/Scoop/AUR publish

Copilot AI review requested due to automatic review settings February 28, 2026 20:25
@github-actions github-actions bot added ci CI/CD workflows documentation Improvements or additions to documentation labels Feb 28, 2026
Add release orchestration:
- scripts/release.sh: validates semver, branch, clean tree, sync, no
  replace directives, runs make release-check, tags and pushes
- Makefile: replace-check, release-check (check + replace-check + vuln +
  race-test), release targets

Activate package manager distribution:
- Homebrew cask via basecamp/homebrew-tap Casks/
- Scoop manifest via basecamp/homebrew-tap root
- AUR basecamp-bin package with shell completions

Bundle shell completions (bash, zsh, fish) in release archives via
GoReleaser before hooks.

Remove Docker release channel (binary CLI with browser OAuth, keyring,
and shell integration doesn't work in containers; eliminates QEMU build
time and failure mode).

Add RELEASING.md maintainer runbook, CODEOWNERS, PR template.
Align install.md and README.md with working install matrix.
@github-actions github-actions bot added enhancement New feature or request and removed documentation Improvements or additions to documentation labels Feb 28, 2026
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3d394af1f7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- provides: [basecamp] — declares the binary this package provides
- conflicts: [basecamp, basecamp-cli] — prevents dual-install with
  existing basecamp-cli AUR package
- optdepends for shell completion packages
- Fix pkgdesc to follow AUR style (no articles, descriptive)
@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Feb 28, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds end-to-end release engineering for the Basecamp CLI, covering local release orchestration, CI publishing via GoReleaser, package-manager distribution, bundled shell completions, and maintainer documentation.

Changes:

  • Introduces scripts/release.sh plus new Makefile targets (release, release-check, replace-check, race-test) to standardize release cuts and pre-flight validation.
  • Extends .goreleaser.yaml to generate and ship shell completions and publish to Homebrew Cask, Scoop, and AUR.
  • Updates release workflow and docs (RELEASING.md, install docs, PR template, CODEOWNERS) to match the new release process.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
scripts/release.sh New local release script to validate state, run pre-flight checks, tag, and push.
Makefile Adds release/race/replace-check targets and surfaces them in make help.
.goreleaser.yaml Generates completion artifacts and configures publishing to Homebrew/Scoop/AUR.
.github/workflows/release.yml Adjusts release workflow token scope/inputs and removes Docker-related pieces.
RELEASING.md New maintainer runbook documenting the release pipeline and channels.
install.md Updates install options and adds GitHub Release install path.
README.md Aligns “Other installation methods” with the updated install matrix.
.github/pull_request_template.md Adds a minimal PR template emphasizing What/Why/Testing.
.github/CODEOWNERS Adds ownership rules for release infrastructure (currently includes a repo-wide wildcard).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Rename LICENSE.md → MIT-LICENSE for consistency with other repos
- Update all references (.goreleaser.yaml AUR package, README.md)
- Add check-surface-compat target: builds previous tag in worktree,
  diffs CLI surface against current — mirrors CI release gate
- Wire check-surface-compat into release-check
- Fix help text for release-check (was missing race + surface compat)
@github-actions github-actions bot added enhancement New feature or request and removed enhancement New feature or request labels Feb 28, 2026
Copilot AI review requested due to automatic review settings February 28, 2026 20:51
@github-actions github-actions bot added documentation Improvements or additions to documentation and removed enhancement New feature or request labels Feb 28, 2026
- Fix DRY_RUN=1 not recognized as dry-run (only "true" matched)
- Fix grep patterns: \s is not POSIX, use [[:space:]] in Makefile
  and release.sh
- Update RELEASING.md to reference make release-check (not make check)
  and enumerate all pre-flight checks
@github-actions github-actions bot added enhancement New feature or request and removed documentation Improvements or additions to documentation labels Feb 28, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 11 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Add MIT-LICENSE explicitly to archive files (LICENSE* glob doesn't
  match MIT-LICENSE prefix)
- Pass DRY_RUN as env var from Makefile to release.sh so
  make release VERSION=x.y.z DRY_RUN=1 works correctly
- Use mktemp for worktree path in check-surface-compat with trap
  cleanup to avoid stale worktree collisions
@github-actions github-actions bot added documentation Improvements or additions to documentation and removed enhancement New feature or request labels Feb 28, 2026
@jeremy jeremy merged commit 30bce0e into main Feb 28, 2026
23 checks passed
@jeremy jeremy deleted the releng branch February 28, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD workflows documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants