Skip to content

Implement CI-driven release management with automated binary distribution #195

Description

@codekiln

Problem

Current release process has critical gaps:

  1. No Quality Gates on Release: Release workflow builds/publishes even if tests fail
  2. Missing Binary Artifacts: Release workflow builds binaries but doesn't upload them (v0.3.0, v0.2.0, v0.1.0 all have 0 assets)
  3. Manual Process: Version bumps, tags, and changelog require manual steps
  4. Installation Broken: Installer script exists but can't download binaries

Current State

What Works:

  • ✅ Comprehensive CI checks (format, tests, clippy, builds)
  • ✅ Release workflow creates GitHub releases with changelog
  • ✅ Production-ready installer script (`scripts/install.sh`)
  • ✅ Complete installation documentation

What's Broken:

  • ❌ Binary artifacts never uploaded to releases
  • ❌ Users can't install via installer (no binaries to download)
  • ❌ Release workflow has no safety net (could publish broken code)
  • ❌ Manual tag creation error-prone

Risk Scenario:
v0.4.0 PR #193 had failing tests. If tag was pushed early, broken release would publish.

Proposed Solution

Design Goals:

  • Quality gates MUST pass before any release
  • Binaries automatically built and published
  • One-button release preparation (GitHub UI)
  • Automatic version determination from commits
  • Installer script works for version-specific installs

Architecture:

  1. Manual workflow_dispatch to start release
  2. Automated PR creation with version + changelog
  3. All CI checks must pass on release PR
  4. Auto-tag on PR merge (only if CI passed)
  5. Release workflow verifies CI status before building
  6. Binaries uploaded to GitHub release
  7. Installer script downloads versioned binaries

Implementation Phases

This epic is broken into phases as sub-issues:

  • Phase 0: Fix binary upload (CRITICAL - blocks others)
  • Phase 1: Add CI verification to release workflow
  • Phase 2: Automate tag creation on PR merge
  • Phase 3: Automate release PR creation
  • Phase 4: Verify installer script functionality

Success Criteria

  1. ✅ Release binaries attached to every GitHub release
  2. ✅ Installer script works: `curl -fsSL https://raw.githubusercontent.com/codekiln/langstar/main/scripts/install.sh | sh`
  3. ✅ Version-specific installs work: `curl ... | sh -s -- --version 0.4.0`
  4. ✅ Impossible to publish release without passing CI
  5. ✅ No manual tag creation required
  6. ✅ Release initiated via GitHub UI button

References

  • Release workflow: `.github/workflows/release.yml`
  • CI workflow: `.github/workflows/ci.yml`
  • Installer script: `scripts/install.sh`
  • Installation docs: `docs/installation.md`
  • bump-release skill: `.claude/skills/bump-release/`

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions