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>
This commit is contained in:
Gu
2025-12-23 14:46:22 -08:00
parent 224923311b
commit 4f36faa03b

View File

@@ -6,16 +6,6 @@ name: Retrigger Sync on Approval
on: on:
pull_request_review: pull_request_review:
types: [submitted] types: [submitted]
workflow_dispatch:
inputs:
pr_number:
description: 'PR number to simulate approval for (for testing)'
required: true
type: string
skip_checks:
description: 'Skip fork/author checks (for testing internal PRs)'
type: boolean
default: true
permissions: permissions:
contents: read contents: read
@@ -25,8 +15,8 @@ permissions:
jobs: jobs:
retrigger-on-approval: retrigger-on-approval:
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Only run for approved reviews OR manual dispatch # Only run for approved reviews
if: github.event_name == 'workflow_dispatch' || github.event.review.state == 'approved' if: github.event.review.state == 'approved'
steps: steps:
- name: Check if retrigger is needed - name: Check if retrigger is needed
@@ -34,73 +24,47 @@ jobs:
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
script: | script: |
const isManualTrigger = context.eventName === 'workflow_dispatch'; const prNumber = context.payload.pull_request.number;
const skipChecks = isManualTrigger && '${{ inputs.skip_checks }}' === 'true'; const prAuthor = context.payload.pull_request.user.login;
const prHeadRepo = context.payload.pull_request.head.repo.full_name;
let prNumber, prAuthor, prHeadRepo, prBaseRepo, reviewer, reviewerAssociation; const prBaseRepo = context.payload.pull_request.base.repo.full_name;
const reviewer = context.payload.review.user.login;
if (isManualTrigger) { const reviewerAssociation = context.payload.review.author_association;
// Manual trigger - fetch PR details
prNumber = parseInt('${{ inputs.pr_number }}');
console.log(`Manual trigger for PR #${prNumber} (skip_checks: ${skipChecks})`);
const { data: pr } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber
});
prAuthor = pr.user.login;
prHeadRepo = pr.head.repo.full_name;
prBaseRepo = pr.base.repo.full_name;
reviewer = context.actor; // Person who triggered the workflow
reviewerAssociation = 'MEMBER'; // Assume maintainer for manual trigger
} else {
// Pull request review trigger
prNumber = context.payload.pull_request.number;
prAuthor = context.payload.pull_request.user.login;
prHeadRepo = context.payload.pull_request.head.repo.full_name;
prBaseRepo = context.payload.pull_request.base.repo.full_name;
reviewer = context.payload.review.user.login;
reviewerAssociation = context.payload.review.author_association;
}
console.log(`PR #${prNumber} approved by ${reviewer} (${reviewerAssociation})`); console.log(`PR #${prNumber} approved by ${reviewer} (${reviewerAssociation})`);
console.log(`Author: ${prAuthor}`); console.log(`Author: ${prAuthor}`);
console.log(`Head repo: ${prHeadRepo}`); console.log(`Head repo: ${prHeadRepo}`);
console.log(`Base repo: ${prBaseRepo}`); console.log(`Base repo: ${prBaseRepo}`);
// TODO: UNCOMMENT THESE CHECKS AFTER TESTING
// Check 1: Is this a fork PR? // Check 1: Is this a fork PR?
// const isFork = prHeadRepo !== prBaseRepo; const isFork = prHeadRepo !== prBaseRepo;
// if (!isFork) { if (!isFork) {
// console.log('Not a fork PR - approval gate not needed, skipping retrigger'); console.log('Not a fork PR - approval gate not needed, skipping retrigger');
// core.setOutput('should_retrigger', 'false'); core.setOutput('should_retrigger', 'false');
// core.setOutput('reason', 'not_fork'); core.setOutput('reason', 'not_fork');
// return; return;
// } }
// console.log('PR is from a fork - approval gate applies'); console.log('PR is from a fork - approval gate applies');
// Check 2: Is the PR author already trusted? If so, no approval gate was needed // Check 2: Is the PR author already trusted? If so, no approval gate was needed
// const trustedAssociations = ['OWNER', 'MEMBER', 'COLLABORATOR']; const trustedAssociations = ['OWNER', 'MEMBER', 'COLLABORATOR'];
// const authorAssociation = context.payload.pull_request.author_association; const authorAssociation = context.payload.pull_request.author_association;
// if (trustedAssociations.includes(authorAssociation)) { if (trustedAssociations.includes(authorAssociation)) {
// console.log(`PR author ${prAuthor} is already trusted (${authorAssociation}) - no approval gate needed`); console.log(`PR author ${prAuthor} is already trusted (${authorAssociation}) - no approval gate needed`);
// core.setOutput('should_retrigger', 'false'); core.setOutput('should_retrigger', 'false');
// core.setOutput('reason', 'author_trusted'); core.setOutput('reason', 'author_trusted');
// return; return;
// } }
// console.log(`PR author ${prAuthor} is not trusted (${authorAssociation}) - approval gate applies`); console.log(`PR author ${prAuthor} is not trusted (${authorAssociation}) - approval gate applies`);
// Check 3: Is the reviewer a trusted maintainer? // Check 3: Is the reviewer a trusted maintainer?
// if (!trustedAssociations.includes(reviewerAssociation)) { if (!trustedAssociations.includes(reviewerAssociation)) {
// console.log(`Reviewer ${reviewer} is not a maintainer (${reviewerAssociation}) - cannot unlock approval gate`); console.log(`Reviewer ${reviewer} is not a maintainer (${reviewerAssociation}) - cannot unlock approval gate`);
// core.setOutput('should_retrigger', 'false'); core.setOutput('should_retrigger', 'false');
// core.setOutput('reason', 'reviewer_not_maintainer'); core.setOutput('reason', 'reviewer_not_maintainer');
// return; return;
// } }
// console.log(`Reviewer ${reviewer} is a maintainer - approval is valid`); console.log(`Reviewer ${reviewer} is a maintainer - approval is valid`);
console.log('⚠️ CHECKS COMMENTED OUT FOR TESTING - skipping fork/author/reviewer checks');
// Check 4: Does translation PR already exist? // Check 4: Does translation PR already exist?
const syncBranch = `docs-sync-pr-${prNumber}`; const syncBranch = `docs-sync-pr-${prNumber}`;