Add release-plan.yaml rollout campaign#103
Conversation
- Refactor campaign-finalize-per-repo for generic reuse - Add INCLUDE filter to release-info workflow - Create release-plan-rollout campaign workflow and actions - Add generate-release-plan TypeScript action - Add PR body template and documentation Fixes camaraproject#99
…ject#99) - Add include_wip_repos and include_new_repos workflow inputs - Update select job to use repositories array with API file detection - Categorize repos: with-release, WIP (has API files), new (no API files) - Generate placeholder release-plan.yaml for repos without releases - Add warning section in PR body template for placeholders - Update aggregation summary with category breakdown - Update campaign documentation
- Add UX-reviewed templates for repos with/without releases - Use Mustache for YAML generation with code-appended API section - Fetch CODEOWNERS and include all in main_contacts - Simplify campaign-finalize-per-repo: skip if PR exists (no superseding)
- Remove duplicate meta_release entry (consolidated conditional block) - Update meta_release comment: "update for next cycle when planning" - Update target_release_type comment in both templates: "must be set before release can be triggered"
- Enable validation via hdamker/tooling@release-plan-validation (stub) - Add log step showing validation result (valid, errors, warnings) - Skip PR creation when validation fails, report error in summary - Remove target_release_type and pr_body_template from summary output
|
@tanjadegroot @camaraproject/release-management_maintainers the workflow is not yet 100% complete and not fully tested, but I would like to get already your comments on the four templates. They are designed along the following principles:
Three examples of generated release-plan.yaml files (from https://github.com/hdamker/project-administration/actions/runs/20861601808):
|
campaigns/release-plan-rollout/templates/release-plan-no-releases.mustache
Outdated
Show resolved
Hide resolved
campaigns/release-plan-rollout/templates/pr-body-with-releases.mustache
Outdated
Show resolved
Hide resolved
- campaign-finalize-per-repo: derive git user identity from github_token via gh api user (removes hardcoded/configurable git_user_name/email) - Templates: update docs URL to ReleaseManagement/tree/main/documentation - PR body templates: add three documentation links (full docs, workflow spec, API versioning guide)
In apply mode, artifacts are named results-* not plan-*. The aggregate job now detects the mode and uses the correct pattern and file names.
|
Thanks @hdamker I've checked and proofread all the templates, looks good 👍 Just a couple of minor comments:
For: ...may be worth stating the meta-release syntax (i.e. no space between the classifier and the year: Fall26 ✅ , Falll 26 ❌ )
For: ...please can you include a commented example showing the |
Hi @Kevsy they are not included in the templates as they will be generated within the workflow based on the existing APIs, see for example in camaraproject/QualityOnDemand#523. For a new repository without prior release there is an example added, see camaraproject/ConsentManagement#7 Regarding "Fall26" vs "Fall 26" ... good point to add this to the validation (allowing currently only Spring26 and Fall26, if we support maintenance releases also Fall25). |
Avoids GitHub's "bidirectional Unicode text" warning banner when viewing generated release-plan.yaml files.
- Update API section comments in release-plan-no-releases.mustache - Rename example-api to placeholder-entry for clarity - Update PR body template to match
Removes remaining Unicode characters (U+2014 EM DASH) that triggered GitHub's bidirectional text warning banner.
- Update workflow comment to describe CI validation and release generation - Clarify target_release_tag comment in with-releases template - Add explicit note about target_release_tag pre-fill in PR body
Pattern validation was already within the script, now also validating against the list of concrete valid values (as of now |
- Replace "work in progress" link with Release Management Documentation - Add specific link to release-plan.yaml documentation - Add link to Release Lifecycle (explains workflow phases) - Simplify API Versioning link text
|
Updated the documentation links in 699e907, they are now dependent on the merge of camaraproject/ReleaseManagement#364 (PR can be merged and tested on repositories earlier, but documentation links will not work) |
- Update actions/checkout v4 -> v6 - Update actions/github-script v7 -> v8 - Update actions/setup-node v4 -> v6 - Update actions/upload-artifact v4 -> v6 - Update actions/download-artifact v4 -> v7 - Update actions/upload-pages-artifact v3 -> v4 - SHA pin peter-evans/create-pull-request to v8.0.0 - Add dependabot.yml for automated weekly updates
|
Done here in this PR branch: Security hardening: Update GitHub Actions and add Dependabot* Updates all GitHub Actions to their latest major versions and adds automated dependency management:
Third-party action Added |
albertoramosmonagas
left a comment
There was a problem hiding this comment.
Just a few questions, but LGTM!
What type of PR is this?
enhancement/feature
What this PR does / why we need it:
Implements the release-plan.yaml rollout campaign - automated infrastructure to add
release-plan.yamlmetadata files to all ~61 CAMARA API repositories.Key features:
release-plan.yamlfromreleases-master.yamldatamain_contactsfrom repository CODEOWNERShdamker/tooling@release-plan-validation)Templates for review:
YAML templates (generated
release-plan.yaml):PR body templates (PR descriptions for target repos):
Testing Status
Apply mode test (3 repos): Successful run 21092880099
Dry-run test (all repos): Successful run (2 minutes)
Which issue(s) this PR fixes:
Fixes #99
Special notes for reviewers:
Feedback requested on:
target_release_type: none, dependencies versions)Workflow:
selectjob: Builds repo list fromreleases-master.yaml, filters by category, skips repos with existingrelease-plan.yamlrunjob (matrix): For each repo: fetch CODEOWNERS → generate YAML → validate → create PRaggregatejob: Merges all per-repo results into campaign summaryChanges:
campaigns/release-plan-rollout/generate-release-plan(TypeScript, Mustache templates)campaign-finalize-per-repo(removed superseding logic)camaraproject/tooling@v0)Before production rollout:
hdamker/tooling@release-plan-validationtocamaraproject/tooling@v0(after shared-action is released)Changelog input
Additional documentation