Skip to content

CI/CD: Implement Professional Release Cadence & Automated Versioning #80

Description

@ayhambd12

Description
To ensure the project remains stable and predictable as it grows, we should implement a structured CI/CD pipeline.
This pipeline will automate our versioning and release management, providing a clean, documented history of changes
while maintaining a high velocity of development.

By establishing a reliable "Latest" build target, this system will provide the necessary infrastructure for the
clawdchan update command to function seamlessly.

Proposed Workflow

  1. Semantic Versioning (SemVer):
    • The project will adopt SemVer (Major.Minor.Patch) to clearly communicate the impact of updates (e.g., bug fixes
      vs. new features vs. breaking changes).
  2. Weekly Release Cycle:
    • We will implement a weekly release cadence to group updates into stable milestones.
    • A scheduled GitHub Action will automatically "promote" the current state of the repository to a new version tag
      once a week.
  3. Version Injection:
    • The version string will be injected into the binaries at build-time (e.g., using ldflags to set main.version).
      This allows the CLI to report its own version and helps the update command verify successful synchronization.
  4. Continuous Artifact Availability:
    • Every merge to the main branch will trigger the creation of "Latest" build artifacts.
    • These artifacts will be published to a persistent release target, ensuring the update command always has a
      stable, pre-built binary to pull from.

Key Components

  • Automated Changelog: A tool to automatically categorize Pull Requests (Features, Fixes, etc.) into a release
    summary as they are merged.
  • Versioning Automation: A GitHub Action that calculates the next version number based on PR labels and automatically
    applies the Git tag on a schedule.
  • Packaging Pipeline: Leveraging the existing goreleaser configuration to build and upload packages for all supported
    platforms (Windows, macOS, Linux) whenever a new milestone or "Latest" build is triggered.

Technical Implementation Tasks

  1. Version Declaration: Declare var version = "dev" in main.go.
  2. Release Drafter: Configure a workflow to generate categorized release notes from PR titles.
  3. Scheduled Promotion: Create a GitHub Action to handle the weekly tagging and release publication.
  4. Sync Target: Configure the build pipeline to maintain a "Latest" release tag that the update command can target
    for immediate synchronization.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions