Skip to content

Commit 704f765

Browse files
sthulbheitorlessa
andauthored
chore(automation): remove previous labels when PR is updated (#3066)
Co-authored-by: Heitor Lessa <[email protected]>
1 parent 22a6925 commit 704f765

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

.github/scripts/label_pr_based_on_title.js

+16
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ module.exports = async ({github, context, core}) => {
1717
"deprecated": DEPRECATED_REGEX,
1818
}
1919

20+
// get PR labels from env
21+
const prLabels = process.env.PR_LABELS.replaceAll("\"", "").split(",");
22+
const labelKeys = Object.keys(labels);
23+
2024
// Maintenance: We should keep track of modified PRs in case their titles change
2125
let miss = 0;
2226
try {
@@ -26,6 +30,18 @@ module.exports = async ({github, context, core}) => {
2630
if (matches != null) {
2731
core.info(`Auto-labeling PR ${PR_NUMBER} with ${label}`)
2832

33+
for (const prLabel of prLabels) {
34+
if (labelKeys.includes(prLabel) && prLabel !== label) {
35+
core.info(`PR previously tagged with: ${prLabel}, removing.`);
36+
await github.rest.issues.removeLabel({
37+
issue_number: PR_NUMBER,
38+
owner: context.repo.owner,
39+
repo: context.repo.repo,
40+
name: prLabel
41+
})
42+
}
43+
}
44+
2945
await github.rest.issues.addLabels({
3046
issue_number: PR_NUMBER,
3147
owner: context.repo.owner,

.github/scripts/save_pr_details.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
1-
module.exports = async ({context, core}) => {
1+
module.exports = async ({github, context, core}) => {
22
const fs = require('fs');
33
const filename = "pr.txt";
44

5+
const labelsData = await github.rest.issues.listLabelsOnIssue({
6+
owner: context.repo.owner,
7+
repo: context.repo.repo,
8+
issue_number: (context.payload.issue || context.payload.pull_request || context.payload).number,
9+
});
10+
11+
const labels = labelsData.data.map((label) => {
12+
return label['name'];
13+
});
14+
515
try {
6-
fs.writeFileSync(`./${filename}`, JSON.stringify(context.payload));
16+
fs.writeFileSync(`./${filename}`, JSON.stringify({...context.payload, ...{labels:labels.join(",")}}));
717

818
return `PR successfully saved ${filename}`
919
} catch (err) {

.github/workflows/reusable_export_pr_details.yml

+7
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ on:
4949
prIsMerged:
5050
description: "Whether PR is merged"
5151
value: ${{ jobs.export_pr_details.outputs.prIsMerged }}
52+
prLabels:
53+
description: "PR Labels"
54+
value: ${{ jobs.export_pr_details.outputs.prLabels }}
5255

5356
permissions:
5457
contents: read
@@ -70,6 +73,7 @@ jobs:
7073
prAuthor: ${{ steps.prAuthor.outputs.prAuthor }}
7174
prAction: ${{ steps.prAction.outputs.prAction }}
7275
prIsMerged: ${{ steps.prIsMerged.outputs.prIsMerged }}
76+
prLabels: ${{ steps.prLabels.outputs.prLabels }}
7377
steps:
7478
- name: Checkout repository # in case caller workflow doesn't checkout thus failing with file not found
7579
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
@@ -106,3 +110,6 @@ jobs:
106110
- name: "Export Pull Request Merged status"
107111
id: prIsMerged
108112
run: echo prIsMerged="$(jq -c '.pull_request.merged' "${FILENAME}")" >> "$GITHUB_OUTPUT"
113+
- name: "Export Pull Request labels"
114+
id: prLabels
115+
run: echo prLabels="$(jq -c '.labels' "${FILENAME}")" >> "$GITHUB_OUTPUT"

0 commit comments

Comments
 (0)