CAMARA Release Process - Coverage of Fall25 Release PR checks
Originally based on https://github.com/camaraproject/tooling/issues/9
Updated with overview of the different validation and generation phases as defined within https://github.com/camaraproject/ReleaseManagement/blob/main/documentation/SupportingDocuments/CAMARA-Release-Workflow-and-Metadata-Concept.md
Release Workflow Categories
The CAMARA release process is structured into a series of workflow categories (C1–C5).
Each category defines what is validated or generated, where it happens (main, release, or maintenance branch), and how automation enforces consistency.
These categories together form the backbone of the automated release process described in the CAMARA Release Workflow and Metadata Concept.
Category | Description |
|
|---|---|---|
C1 – Continuous Validation on | Full linting and schema checks (YAML + OpenAPI), enforcing the work‑in‑progress rule. CI ensures | Placeholders only: |
C2 – Automated Release Branch Generation | On release trigger, tooling creates the release branch, replaces placeholders with computed values (exact versions, server URLs), and writes | Concrete values set only in release branch. |
C3 – Release Preparation & Review | Manual review through PRs to release branch; branch protection enforces CODEOWNERS and reviewers approvals. | — |
C4 – Tagging & Post-Release Sync | Create tag, publish artifacts (including | — |
C5 – Maintenance / Patch Release | Apply the same C2–C4 flow on | — |
Topic-by-Topic Coverage
Topics / Expected Check | How It’s Addressed | Category |
|---|---|---|
YAML and OpenAPI schema validity | CI runs MegaLinter + schema checks on every PR to | C1 |
Version field handling ( | Must be | C1 → C2 |
Server URL pattern enforcement (“Version in URL path”) | Placeholder format validated on | C1 + C2 |
API status / repository readiness coherence | CI cross-checks | C1 |
Existence of API definitions and tests | Required for all | C1 |
No changes to | CI diff against previous release tag; reference point on | C1 |
Dependency references (Commonalities / ICM) | Only meta-release references on | C1 + C2 |
Placeholder replacement | Done automatically for | C2 |
Generation of | Scripted from | C2 |
CHANGELOG generation | Auto-generated (as far as possible), edited and reviewed via release prep PR. | C2 + C3 |
Readiness checklist validation | Evaluated from metadata; results shown in release PR. | C2 + C3 |
Approval and branch protection | Required CODEOWNER approval before tag. | C3 |
Tag creation and artifact publishing | After approval CI creates | C4 |
Post-release PR to main | After tagging, automation opens a PR to | C4 |
| Marks branch point on | C4 |
Maintenance / patch releases | Executed on | C5 |
Summary Table
Category | Main Focus | When Applied | Key Artifacts |
|---|---|---|---|
C1 – Validation on | Ensure structure, “wip” state, and metadata correctness. | All PRs to | CI reports, schema lint logs. |
C2 – Release Branch Generation | Replace placeholders, compute versions, generate metadata + CHANGELOG. | On release trigger (e.g. issue with label). |
|
C3 – Review & Approval | Manual review of release branch artifacts. | PRs to | Reviewed PRs, branch protections ensure needed approvals. |
C4 – Tag & Sync Back | Tag, publish, open sync PR to | After approval / tag. | GitHub Release, |
C5 – Maintenance | Patch releases on older cycles. | When needed. |
|
Backup — Original Release PR Topics and How They Map
API YAML
info.version-> must be
"wip" on main; set only in release branch (C1 → C2).→ checked via linting rules (C1) or
→ placeholder in main; replaced in release branch (C1 → C2).
→ checked via linting rules (C1) or
→ placeholder in main; replaced in release branch (C1 → C2).
→ placeholder validation on
main, set on release (C1 + C2).x-camara-commonalities with 0.6→ placeholder validation on
main, set on release (C1 + C2).→ lint rule on
main (C1)→ lint rule on
main (C1)externalDocs: description: Project documentation at CAMARA url: https://github.com/camaraproject/<repository-name>
→ schema check (C1).
→ schema check (C1).
lint rule on
main (C1)CHANGELOG.md release related section
→ replaced via placeholder generation from template (C2).
-> updated on release branch (C2)
API Readiness Checklist
→ complete list generated on release branch (C2)
→ derived from release-plan.yaml
→ derived from release-plan.yaml
→ derived from release-plan.yaml
→ derived from release-plan.yaml
→ not immutable, should be only in release review process
Test files
→ existence checked for each
alpha or higher API (C1).→ lint rule on
main (C1).→ automatically replaced in release branch (C2).
README
→ complete section Release Information will be (re)generated on release branch (C2) and again on main branch (C4).
-> same as in other artifacts
× Not recommend for
README.md within: links to website are not immutable, will eventually break→ can be added to (re)generated Release Information section within
main branch (C4).Review process
→ handled by release automation (C2 + C3)
→ derived from metadata (on the release branch) + and displayed in meta-release overview (C2 + C3)
Other automation needs / ideas
→ additional lint rule on
main (C1)