You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Declarative rulesets and repository registry with drift plan - #311
Declares the repository rulesets once and adds a tool that reports where a repository differs: config/rulesets/*.json (the three release rulesets, release-tag-protection and the two main rulesets), config/ruleset-classes.yaml (which ruleset class carries which rulesets) and config/repositories.yaml (one entry per organisation repository, with its ruleset_class). workflows/repository-config/ provides plan (create, update with diff, remove, unmanaged, classic branch protection) and apply for named repositories, with tests over recorded API responses. A weekly workflow runs plan with a dedicated GitHub App and fails on drift; a second workflow runs the tests. scripts/apply-release-rulesets.sh is removed.
One declared copy of each ruleset instead of script heredocs, template UI state and documentation JSON
main branch protection brought to one model across repositories
Drift visible per repository before anything is changed
The first plan shows release-tag-protection to be created on the API repositories and the main changes; apply stays a manual CLI step per repository.
Follow-up PRs: the repository creation workflow applies the declared set instead of copying template rulesets, and tooling's repository-setup.md links to these files.
Rollout after merge (CLI apply, whole per-repository plan, ordered by repository):
ReleaseTest, CommonalitiesTest, Template_API_Repository. Then verify on ReleaseTest: codeowner merge works, manual release-tag publish is refused.
ReleaseManagement, project-administration, tooling (first classic-protection removal on ReleaseManagement).
API repositories with an active release.
All other API repositories.
Working group, Sub Project and Provider Implementation repositories.
Merge rights stay as they are: classic protection is removed only after the main rulesets are active, and its one required approval is carried by Codeowner_review_required.
First plan (2026-10-05, local run, 611 API calls): 96 repositories, 11 clean, 85 with drift, 0 errors. Release rulesets on API repositories match the declared files. Changes: release-tag-protection created on 67 API repositories, main rulesets created where missing, 10 disabled Codeowner_review_required activated on repositories with several codeowners, 8 disabled copies removed on single-codeowner repositories, 7 retired rulesets removed, classic protection removed on 40 repositories, release rulesets removed from EdgeCloud (not an API repository), Only_Codeowner_Can_Merge on tooling set to 0 required approvals. Full result attached.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
What this PR does / why we need it:
Declares the repository rulesets once and adds a tool that reports where a repository differs:
config/rulesets/*.json(the three release rulesets,release-tag-protectionand the twomainrulesets),config/ruleset-classes.yaml(which ruleset class carries which rulesets) andconfig/repositories.yaml(one entry per organisation repository, with itsruleset_class).workflows/repository-config/providesplan(create, update with diff, remove, unmanaged, classic branch protection) andapplyfor named repositories, with tests over recorded API responses. A weekly workflow runsplanwith a dedicated GitHub App and fails on drift; a second workflow runs the tests.scripts/apply-release-rulesets.shis removed.mainbranch protection brought to one model across repositoriesThe first
planshowsrelease-tag-protectionto be created on the API repositories and themainchanges;applystays a manual CLI step per repository.Which issue(s) this PR fixes:
Part of #310
Special notes for reviewers:
Follow-up PRs: the repository creation workflow applies the declared set instead of copying template rulesets, and tooling's
repository-setup.mdlinks to these files.Related: camaraproject/ReleaseManagement#676
Changelog input
Additional documentation
workflows/repository-config/README.md