Skip to content

Commit 4f36faa

Browse files
guchenheclaude
andcommitted
Remove test mode from approval retrigger workflow
- Remove workflow_dispatch trigger (was for testing) - Remove manual trigger handling code - Uncomment fork/author/reviewer checks - Workflow now only triggers on actual PR approvals 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 2249233 commit 4f36faa

1 file changed

Lines changed: 32 additions & 68 deletions

File tree

.github/workflows/sync_docs_on_approval.yml

Lines changed: 32 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,6 @@ name: Retrigger Sync on Approval
66
on:
77
pull_request_review:
88
types: [submitted]
9-
workflow_dispatch:
10-
inputs:
11-
pr_number:
12-
description: 'PR number to simulate approval for (for testing)'
13-
required: true
14-
type: string
15-
skip_checks:
16-
description: 'Skip fork/author checks (for testing internal PRs)'
17-
type: boolean
18-
default: true
199

2010
permissions:
2111
contents: read
@@ -25,82 +15,56 @@ permissions:
2515
jobs:
2616
retrigger-on-approval:
2717
runs-on: ubuntu-latest
28-
# Only run for approved reviews OR manual dispatch
29-
if: github.event_name == 'workflow_dispatch' || github.event.review.state == 'approved'
18+
# Only run for approved reviews
19+
if: github.event.review.state == 'approved'
3020

3121
steps:
3222
- name: Check if retrigger is needed
3323
id: check
3424
uses: actions/github-script@v7
3525
with:
3626
script: |
37-
const isManualTrigger = context.eventName === 'workflow_dispatch';
38-
const skipChecks = isManualTrigger && '${{ inputs.skip_checks }}' === 'true';
39-
40-
let prNumber, prAuthor, prHeadRepo, prBaseRepo, reviewer, reviewerAssociation;
41-
42-
if (isManualTrigger) {
43-
// Manual trigger - fetch PR details
44-
prNumber = parseInt('${{ inputs.pr_number }}');
45-
console.log(`Manual trigger for PR #${prNumber} (skip_checks: ${skipChecks})`);
46-
47-
const { data: pr } = await github.rest.pulls.get({
48-
owner: context.repo.owner,
49-
repo: context.repo.repo,
50-
pull_number: prNumber
51-
});
52-
53-
prAuthor = pr.user.login;
54-
prHeadRepo = pr.head.repo.full_name;
55-
prBaseRepo = pr.base.repo.full_name;
56-
reviewer = context.actor; // Person who triggered the workflow
57-
reviewerAssociation = 'MEMBER'; // Assume maintainer for manual trigger
58-
} else {
59-
// Pull request review trigger
60-
prNumber = context.payload.pull_request.number;
61-
prAuthor = context.payload.pull_request.user.login;
62-
prHeadRepo = context.payload.pull_request.head.repo.full_name;
63-
prBaseRepo = context.payload.pull_request.base.repo.full_name;
64-
reviewer = context.payload.review.user.login;
65-
reviewerAssociation = context.payload.review.author_association;
66-
}
27+
const prNumber = context.payload.pull_request.number;
28+
const prAuthor = context.payload.pull_request.user.login;
29+
const prHeadRepo = context.payload.pull_request.head.repo.full_name;
30+
const prBaseRepo = context.payload.pull_request.base.repo.full_name;
31+
const reviewer = context.payload.review.user.login;
32+
const reviewerAssociation = context.payload.review.author_association;
6733
6834
console.log(`PR #${prNumber} approved by ${reviewer} (${reviewerAssociation})`);
6935
console.log(`Author: ${prAuthor}`);
7036
console.log(`Head repo: ${prHeadRepo}`);
7137
console.log(`Base repo: ${prBaseRepo}`);
7238
73-
// TODO: UNCOMMENT THESE CHECKS AFTER TESTING
7439
// Check 1: Is this a fork PR?
75-
// const isFork = prHeadRepo !== prBaseRepo;
76-
// if (!isFork) {
77-
// console.log('Not a fork PR - approval gate not needed, skipping retrigger');
78-
// core.setOutput('should_retrigger', 'false');
79-
// core.setOutput('reason', 'not_fork');
80-
// return;
81-
// }
82-
// console.log('PR is from a fork - approval gate applies');
40+
const isFork = prHeadRepo !== prBaseRepo;
41+
if (!isFork) {
42+
console.log('Not a fork PR - approval gate not needed, skipping retrigger');
43+
core.setOutput('should_retrigger', 'false');
44+
core.setOutput('reason', 'not_fork');
45+
return;
46+
}
47+
console.log('PR is from a fork - approval gate applies');
8348
8449
// Check 2: Is the PR author already trusted? If so, no approval gate was needed
85-
// const trustedAssociations = ['OWNER', 'MEMBER', 'COLLABORATOR'];
86-
// const authorAssociation = context.payload.pull_request.author_association;
87-
// if (trustedAssociations.includes(authorAssociation)) {
88-
// console.log(`PR author ${prAuthor} is already trusted (${authorAssociation}) - no approval gate needed`);
89-
// core.setOutput('should_retrigger', 'false');
90-
// core.setOutput('reason', 'author_trusted');
91-
// return;
92-
// }
93-
// console.log(`PR author ${prAuthor} is not trusted (${authorAssociation}) - approval gate applies`);
50+
const trustedAssociations = ['OWNER', 'MEMBER', 'COLLABORATOR'];
51+
const authorAssociation = context.payload.pull_request.author_association;
52+
if (trustedAssociations.includes(authorAssociation)) {
53+
console.log(`PR author ${prAuthor} is already trusted (${authorAssociation}) - no approval gate needed`);
54+
core.setOutput('should_retrigger', 'false');
55+
core.setOutput('reason', 'author_trusted');
56+
return;
57+
}
58+
console.log(`PR author ${prAuthor} is not trusted (${authorAssociation}) - approval gate applies`);
9459
9560
// Check 3: Is the reviewer a trusted maintainer?
96-
// if (!trustedAssociations.includes(reviewerAssociation)) {
97-
// console.log(`Reviewer ${reviewer} is not a maintainer (${reviewerAssociation}) - cannot unlock approval gate`);
98-
// core.setOutput('should_retrigger', 'false');
99-
// core.setOutput('reason', 'reviewer_not_maintainer');
100-
// return;
101-
// }
102-
// console.log(`Reviewer ${reviewer} is a maintainer - approval is valid`);
103-
console.log('⚠️ CHECKS COMMENTED OUT FOR TESTING - skipping fork/author/reviewer checks');
61+
if (!trustedAssociations.includes(reviewerAssociation)) {
62+
console.log(`Reviewer ${reviewer} is not a maintainer (${reviewerAssociation}) - cannot unlock approval gate`);
63+
core.setOutput('should_retrigger', 'false');
64+
core.setOutput('reason', 'reviewer_not_maintainer');
65+
return;
66+
}
67+
console.log(`Reviewer ${reviewer} is a maintainer - approval is valid`);
10468
10569
// Check 4: Does translation PR already exist?
10670
const syncBranch = `docs-sync-pr-${prNumber}`;

0 commit comments

Comments
 (0)