Skip to content

Add distribution pipeline (GitHub Releases, signing, DMG)#84

Closed
dhilgaertner wants to merge 1 commit intomainfrom
feature/crow-61-distribution-strategy
Closed

Add distribution pipeline (GitHub Releases, signing, DMG)#84
dhilgaertner wants to merge 1 commit intomainfrom
feature/crow-61-distribution-strategy

Conversation

@dhilgaertner
Copy link
Copy Markdown
Contributor

Summary

  • Adds a complete distribution pipeline: VERSION file, code signing (ad-hoc or Developer ID), DMG packaging, and a GitHub Actions release workflow triggered on v* tag push
  • Updates README with an Installation section covering download, Homebrew (coming soon), platform support matrix, and auto-update deferral note
  • Centralizes version management: VERSION file → generate-build-info.shBuildInfo.swift + CLIVersion.swift + Info.plist (replaces three hardcoded 0.1.0 strings)

Key Decisions

  • Auto-update: Deferred — not needed for a developer-tools v1; users can brew upgrade or re-download
  • Code signing: Ad-hoc initially — scripts support Developer ID when secrets are configured in CI
  • Homebrew tap: Deferred — requires a published release to exist first; noted as "coming soon" in README

New Files

File Purpose
VERSION Single source of truth for app version
Crow.entitlements Runtime entitlements for Metal/Ghostty
scripts/sign.sh Code-sign .app (ad-hoc or Developer ID)
scripts/create-dmg.sh Create DMG via create-dmg or hdiutil fallback
.github/workflows/release.yml CI release on v* tag push

Test plan

  • make release produces Crow.app with correct version in Info.plist
  • scripts/sign.sh signs the app ad-hoc; codesign -vvv Crow.app passes
  • scripts/create-dmg.sh creates Crow-0.1.0-arm64.dmg that mounts correctly
  • make dist chains release → sign → dmg end-to-end
  • Push a test tag (v0.1.0-test.1) to validate the GitHub Actions workflow

Closes #61

🤖 Generated with Claude Code

…aging

Establishes a complete distribution strategy for Crow:

- VERSION file as single source of truth for app version
- Dynamic versioning in bundle.sh and generate-build-info.sh (reads from
  VERSION file or env var, generates BuildInfo.swift + CLIVersion.swift)
- Entitlements file for Metal/Ghostty runtime requirements
- Code signing script (ad-hoc or Developer ID via env var)
- DMG creation script (create-dmg with hdiutil fallback)
- GitHub Actions release workflow triggered on v* tag push
- Makefile targets: sign, dmg, dist
- README installation section with download, Homebrew (coming soon),
  platform support matrix, and auto-update deferral note

Closes #61

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@dhilgaertner
Copy link
Copy Markdown
Contributor Author

Closing — the distribution pipeline was implemented across PRs #86, #87, #89, and #81 which landed on main. Those cover versioning, code signing, notarization, DMG packaging, CI, and release automation more comprehensively than this PR.

@dhilgaertner dhilgaertner deleted the feature/crow-61-distribution-strategy branch April 6, 2026 02:25
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.

Define distribution strategy (Homebrew, GitHub Releases, auto-update)

1 participant