Skip to content

Commit e4e7231

Browse files
heiskrCopilot
andauthored
Create GHES archive repos with a ruleset instead of classic branch protection (#62435)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: cc9a0aaa-5b93-4608-aa00-657344755a7e
1 parent a03cede commit e4e7231

1 file changed

Lines changed: 28 additions & 12 deletions

File tree

src/ghes-releases/scripts/deprecate/create-docs-ghes-version-repo.sh

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,34 @@ gh api -X PUT "/orgs/github/teams/docs-engineering/repos/github/docs-ghes-$versi
3232
-f 'permission=admin' --silent
3333
echo "--- github/employees as read"
3434
gh api -X PUT "/orgs/github/teams/employees/repos/github/docs-ghes-$version" --silent
35-
echo "--- Require a pull request review before merging"
36-
repositoryId="$(gh api graphql -f query="{repository(owner:\"github\",name:\"docs-ghes-$version\"){id}}" -q .data.repository.id)"
37-
gh api graphql -f query='
38-
mutation($repositoryId:ID!,$branch:String!,$requiredReviews:Int!) {
39-
createBranchProtectionRule(input: {
40-
repositoryId: $repositoryId
41-
pattern: $branch
42-
requiresApprovingReviews: true
43-
requiredApprovingReviewCount: $requiredReviews
44-
requiresCodeOwnerReviews: true
45-
}) { clientMutationId }
46-
}' -f repositoryId="$repositoryId" -f branch=main -F requiredReviews=1 --silent
35+
echo "--- Protect main with a repository ruleset (1 review + code owners, no force-push or deletion)"
36+
gh api -X POST "/repos/github/docs-ghes-$version/rulesets" --input - --silent <<'RULESET'
37+
{
38+
"name": "main branch protection",
39+
"target": "branch",
40+
"enforcement": "active",
41+
"bypass_actors": [
42+
{ "actor_id": 5, "actor_type": "RepositoryRole", "bypass_mode": "always" }
43+
],
44+
"conditions": {
45+
"ref_name": { "include": ["refs/heads/main"], "exclude": [] }
46+
},
47+
"rules": [
48+
{ "type": "deletion" },
49+
{ "type": "non_fast_forward" },
50+
{
51+
"type": "pull_request",
52+
"parameters": {
53+
"required_approving_review_count": 1,
54+
"dismiss_stale_reviews_on_push": false,
55+
"require_code_owner_review": true,
56+
"require_last_push_approval": false,
57+
"required_review_thread_resolution": false
58+
}
59+
}
60+
]
61+
}
62+
RULESET
4763
echo "--- Enable GitHub Pages, set source to main in root directory, and make the pages site public"
4864
gh api -X POST "/repos/github/docs-ghes-$version/pages" \
4965
-f "source[branch]=main" -f "source[path]=/" -F "public=true" --silent

0 commit comments

Comments
 (0)