Skip to content

[release] Auto patch tagging + GitHub Release on main (v0.1.x) #261

@mfittko

Description

@mfittko

Summary

Stop force-updating existing tags and instead auto-increment patch versions on every update to main (e.g. v0.1.1, v0.1.2, …). Creating/updating minor/major versions remains manual for now.

This should also create a GitHub Release for each auto-created patch tag.

Related / may be a follow-up to #175.


Motivation

  • Force-moving tags is risky (breaks reproducibility and can confuse deployments).
  • Patch versions are a good fit for “every merge to main” fixes.
  • We already have OpenAI-enabled tooling for changelog/release notes; reuse that for consistent release entries.

Proposal

Auto-patch tagging (on push to main)

  • Determine the latest existing tag matching v0.1.*.
  • Bump patch by 1 → produce v0.1.<next>.
  • Create an annotated tag on the new main HEAD.
  • Push the tag.

Auto-release creation

  • Create a GitHub Release for the new tag.
  • Release notes should be generated via an OpenAI-enabled step (existing tooling or a new small script) using a repo secret (e.g. OPENAI_API_KEY).

Manual minor/major

  • v0.2.0, v1.0.0, etc. continue to be created manually for now.

Acceptance Criteria

  • No existing tags are force-updated in normal operation.
  • Every push to main results in exactly one new v0.1.x tag (unless HEAD is already tagged).
  • A GitHub Release is created for each auto-generated patch tag.
  • Workflow is concurrency-safe (no duplicate tags on concurrent pushes).
  • Workflow fails safely (does not create partial releases if tag creation fails).

Implementation Notes (suggested)

  • Add a GitHub Actions workflow triggered on push to main.
  • Use git tag --list 'v0.1.*' --sort=-version:refname to find latest.
  • Guard with a lock/concurrency group (e.g. concurrency: release-main) and/or retry on tag push conflicts.
  • Use gh release create for the release.
  • Use existing changelog generation logic (or a small wrapper) to build release notes.

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