Skip to content

Commit

Permalink
Automatically label and milestone completions
Browse files Browse the repository at this point in the history
  • Loading branch information
mqudsi committed May 22, 2024
1 parent fa0c585 commit 646f7c8
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/autolabel_prs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Auto-Label PRs

on:
pull_request_target:
types: [opened, synchronize]

jobs:
label-and-milestone:
runs-on: ubuntu-latest
steps:
# - name: Checkout repository
# uses: actions/checkout@v2

- name: Set label and milestone
id: set-label-milestone
uses: actions/github-script@v6
with:
# github-token: ${{ secrets.GITHUB_TOKEN }}
github-token: ${{ github.token }}
script: |
const { context, github } = require("@actions/github");
const completionsLabel = 'completions';
const completionsMilestone = 'fish next-3.x';
// Get changed files in the pull request
const prNumber = context.payload.pull_request.number;
const { data: files } = await github.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: prNumber,
});
// Check if any file matches /share/completions/*.fish and no change is outside of /share/
const completionsRegex = new RegExp('^share/completions/.*\.fish');
const isCompletions = files.some(file => completionsRegex.test(file.filename))
&& files.all(file => file.filename.startsWith('share/');
if (isCompletions) {
// Add label to PR
await github.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: [completionsLabel],
});
console.log(`PR ${prNumber} assigned label "${completionsLabel}"`);
// Get the list of milestones
const { data: milestones } = await github.issues.listMilestones({
owner: context.repo.owner,
repo: context.repo.repo,
});
// Find the milestone id
const milestone = milestones.find(milestone => milestone.title === completionsMilestone);
if (milestone) {
// Set the milestone for the PR
await github.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
milestone: milestone.number
});
console.log(`PR ${prNumber} assigned milestone "${completionsMilestone}"`);
} else {
console.error(`Milestone "${completionsMilestone}" not found`);
}
}

0 comments on commit 646f7c8

Please sign in to comment.