Skip to content

Commit

Permalink
Create apply-issue-labels-to-pr.yml
Browse files Browse the repository at this point in the history
  • Loading branch information
steven-tey authored Oct 6, 2024
1 parent 0a52e98 commit b46497f
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions .github/workflows/apply-issue-labels-to-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: "Apply issue labels to PR"

on:
pull_request_target:
types:
- opened

jobs:
label_on_pr:
runs-on: ubuntu-latest

permissions:
contents: none
issues: read
pull-requests: write

steps:
- name: Apply labels from linked issue to PR
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
async function getLinkedIssues(owner, repo, prNumber) {
const query = `query GetLinkedIssues($owner: String!, $repo: String!, $prNumber: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $prNumber) {
closingIssuesReferences(first: 10) {
nodes {
number
labels(first: 10) {
nodes {
name
}
}
}
}
}
}
}`;
const variables = {
owner: owner,
repo: repo,
prNumber: prNumber,
};
const result = await github.graphql(query, variables);
return result.repository.pullRequest.closingIssuesReferences.nodes;
}
const pr = context.payload.pull_request;
const linkedIssues = await getLinkedIssues(
context.repo.owner,
context.repo.repo,
pr.number
);
const labelsToAdd = new Set();
for (const issue of linkedIssues) {
if (issue.labels && issue.labels.nodes) {
for (const label of issue.labels.nodes) {
labelsToAdd.add(label.name);
}
}
}
if (labelsToAdd.size) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: Array.from(labelsToAdd),
});
}

0 comments on commit b46497f

Please sign in to comment.