Skip to content

Add release automation workflow#67

Merged
hdamker merged 1 commit intocamaraproject:release-automationfrom
hdamker:release-automation
Feb 14, 2026
Merged

Add release automation workflow#67
hdamker merged 1 commit intocamaraproject:release-automationfrom
hdamker:release-automation

Conversation

@hdamker
Copy link
Contributor

@hdamker hdamker commented Feb 13, 2026

What type of PR is this?

enhancement/feature

What this PR does / why we need it:

Adds a complete release lifecycle workflow for CAMARA API repositories. The workflow automates:

  • Release Issue management: auto-created from release-plan.yaml, tracks state via labels
  • Snapshot creation: creates release branches with mechanically transformed API files
  • Draft releases: auto-created when the Release PR is merged
  • Publishing: final release publication with CHANGELOG and README updates

The workflow operates through slash commands (/create-snapshot, /discard-snapshot, /delete-draft, /publish-release) on Release Issues and uses a reusable workflow pattern — API repositories only need a lightweight caller workflow.

Components:

  • Reusable GitHub Actions workflow (.github/workflows/release-automation-reusable.yml)
  • Caller workflow template (release_automation/workflows/)
  • 14 Python automation modules (release_automation/scripts/)
  • 6 shared composite actions (shared-actions/)
  • Mustache templates for bot messages, PR bodies, README sections, CHANGELOG
  • Configuration for mechanical transformations (URL path rewrites per release type)
  • Documentation: technical architecture, branching model, repository setup guide
  • 471 unit tests (all passing)

Lifecycle: plansnapshotdraftpublish, with state tracked via labels on the Release Issue and metadata in release-metadata.yaml.

Target branch: release-automation (parallel to main per the branching modelmain continues to serve pr_validation v0 via the v0 tag).

Which issue(s) this PR fixes:

Related to camaraproject/ReleaseManagement#355

Special notes for reviewers:

  • This PR targets the release-automation branch, not main. The two branches coexist per the branching model.
  • All code is new — no modifications to existing pr_validation files on main.
  • Squashed from 104 development commits on a fork branch.
  • Test fixtures use hdamker/TestRepo-QoD as mock repository names — these are purely test data (all GitHub API calls are mocked).

Changelog input

release-note
Add release automation workflow for CAMARA API repositories

Additional documentation

docs
- [Technical Architecture](release_automation/docs/technical-architecture.md)
- [Branching Model](release_automation/docs/branching-model.md)
- [Repository Setup Guide](release_automation/docs/repository-setup.md)

Adds a complete release lifecycle workflow that automates snapshot creation,
release drafts, and publishing for CAMARA API repositories. The workflow
operates through slash commands on Release Issues and integrates with
release-plan.yaml for configuration.

Components:
- Reusable workflow (.github/workflows/release-automation-reusable.yml)
- Caller workflow template (release_automation/workflows/)
- Python automation scripts (release_automation/scripts/)
- Shared composite actions (shared-actions/)
- Mustache templates for bot messages, PR bodies, README sections
- Configuration and mechanical transformation rules
- Documentation: technical architecture, branching model, repository setup
- Comprehensive test suite (471 tests)

Lifecycle: plan -> snapshot -> draft -> publish, with state tracked via
labels on the Release Issue and metadata in release-metadata.yaml.

Squashed from 104 development commits on release-automation-mvp branch.
Full development history preserved in archive/release-automation-mvp-detailed-history.
@hdamker hdamker merged commit 6433967 into camaraproject:release-automation Feb 14, 2026
1 check passed
@hdamker hdamker deleted the release-automation branch February 14, 2026 11:53
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.

1 participant