diff options
| author | pgww <pgww@lists.pglaf.org> | 2025-07-10 08:46:10 -0700 |
|---|---|---|
| committer | pgww <pgww@lists.pglaf.org> | 2025-07-10 08:46:10 -0700 |
| commit | 08795f8ef3099f90f451e2eeef713a21c7e32af5 (patch) | |
| tree | 298e2ccedac4df1e1fcce4f754fe4e4c50f1d23d | |
| parent | 39638245dc49df007b9deebc788b98b4f4f616e5 (diff) | |
| -rw-r--r-- | .github/workflows/auto-assign-reviewers.yml | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/.github/workflows/auto-assign-reviewers.yml b/.github/workflows/auto-assign-reviewers.yml deleted file mode 100644 index e9c2b3e..0000000 --- a/.github/workflows/auto-assign-reviewers.yml +++ /dev/null @@ -1,119 +0,0 @@ -name: Auto-assign PR Reviewers - -on: - pull_request: - types: [opened, reopened, ready_for_review] - -jobs: - assign-reviewers: - runs-on: ubuntu-latest - if: github.event.pull_request.draft == false - - steps: - - name: Assign reviewers - uses: actions/github-script@v7 - with: - script: | - const { owner, repo, number } = context.repo; - const prNumber = context.payload.pull_request.number; - const prAuthor = context.payload.pull_request.user.login; - - // Define your team members and reviewers - const reviewers = [ - 'rtonsing', - 'rbfrank' - ]; - - // Define team reviewers (GitHub teams) - const teamReviewers = [ - 'frontend-team', - 'backend-team' - ]; - - // Filter out the PR author from reviewers - const availableReviewers = reviewers.filter(reviewer => reviewer !== prAuthor); - - // Assign reviewers based on file changes (optional) - const { data: files } = await github.rest.pulls.listFiles({ - owner, - repo, - pull_number: prNumber - }); - - let selectedReviewers = []; - let selectedTeamReviewers = []; - - // Example: Assign based on file patterns - const hasBackendChanges = files.some(file => - file.filename.includes('src/') || - file.filename.includes('api/') || - file.filename.endsWith('.py') || - file.filename.endsWith('.js') - ); - - const hasFrontendChanges = files.some(file => - file.filename.includes('components/') || - file.filename.includes('pages/') || - file.filename.endsWith('.tsx') || - file.filename.endsWith('.css') - ); - - const hasConfigChanges = files.some(file => - file.filename.includes('config/') || - file.filename.includes('.yml') || - file.filename.includes('.yaml') || - file.filename.includes('Dockerfile') - ); - - // Assign reviewers based on changes - if (hasBackendChanges) { - selectedReviewers.push('reviewer1', 'reviewer2'); - selectedTeamReviewers.push('backend-team'); - } - - if (hasFrontendChanges) { - selectedReviewers.push('reviewer2', 'reviewer3'); - selectedTeamReviewers.push('frontend-team'); - } - - if (hasConfigChanges) { - selectedReviewers.push('team-lead'); - } - - // If no specific patterns matched, assign default reviewers - if (selectedReviewers.length === 0) { - selectedReviewers = availableReviewers.slice(0, 2); // Assign first 2 available reviewers - } - - // Remove duplicates and filter out PR author - selectedReviewers = [...new Set(selectedReviewers)].filter(reviewer => reviewer !== prAuthor); - selectedTeamReviewers = [...new Set(selectedTeamReviewers)]; - - // Limit to maximum of 3 individual reviewers - selectedReviewers = selectedReviewers.slice(0, 3); - - try { - if (selectedReviewers.length > 0 || selectedTeamReviewers.length > 0) { - await github.rest.pulls.requestReviewers({ - owner, - repo, - pull_number: prNumber, - reviewers: selectedReviewers // , - // team_reviewers: selectedTeamReviewers - }); - - console.log(`Assigned reviewers: ${selectedReviewers.join(', ')}`); - console.log(`Assigned team reviewers: ${selectedTeamReviewers.join(', ')}`); - - // Optional: Add a comment to the PR - await github.rest.issues.createComment({ - owner, - repo, - issue_number: prNumber, - body: `🤖 Auto-assigned reviewers based on file changes:\n- Individual reviewers: ${selectedReviewers.join(', ')}\n- Team reviewers: ${selectedTeamReviewers.join(', ')}` - }); - } - } catch (error) { - console.error('Error assigning reviewers:', error); - core.setFailed(`Failed to assign reviewers: ${error.message}`); - }
\ No newline at end of file |
