Skip to content

Commit 456fe4d

Browse files
committed
test v3
1 parent 9d1a79b commit 456fe4d

1 file changed

Lines changed: 44 additions & 43 deletions

File tree

.github/workflows/autolabel-pr-issue.yml

Lines changed: 44 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Checkout
1919
uses: actions/checkout@v4
2020

21-
# Step 1: Extract linked issue(s) from PR
21+
# Step 1: Extract linked issues
2222
- name: Extract linked issue(s)
2323
id: extract-issues
2424
uses: actions/github-script@v7
@@ -45,10 +45,9 @@ jobs:
4545
}
4646
}
4747
48-
// ✅ Set output safely as JSON string
4948
core.setOutput('result', JSON.stringify({ issues: Array.from(issueNumbers), pr: prNumber }));
5049
51-
# Step 2: Sync metadata to PR
50+
# Step 2: Sync metadata
5251
- name: Sync Issue Metadata to PR
5352
uses: actions/github-script@v7
5453
env:
@@ -58,7 +57,7 @@ jobs:
5857
script: |
5958
const core = require('@actions/core');
6059
61-
// Safely parse JSON
60+
// Parse JSON safely
6261
let data;
6362
try {
6463
data = JSON.parse(process.env.RESULT_JSON);
@@ -72,58 +71,60 @@ jobs:
7271
const issueNumbers = data.issues || [];
7372
7473
if (!issueNumbers.length) {
75-
console.log("No linked issues found");
74+
console.log("No linked issues found.");
7675
return;
7776
}
7877
7978
for (const issueNumber of issueNumbers) {
79+
let issue;
8080
try {
81-
const { data: issue } = await github.rest.issues.get({
81+
const res = await github.rest.issues.get({
8282
owner: context.repo.owner,
8383
repo: context.repo.repo,
8484
issue_number: parseInt(issueNumber)
8585
});
86+
issue = res.data;
87+
} catch (err) {
88+
console.warn(`Cannot access Issue #${issueNumber}, skipping sync.`);
89+
continue; // skip to next issue
90+
}
8691
87-
console.log(`Syncing metadata from Issue #${issueNumber} to PR #${prNumber}`);
88-
89-
// --- Sync Labels ---
90-
const issueLabels = issue.labels.map(l => l.name);
91-
const { data: pr } = await github.rest.pulls.get({
92-
owner: context.repo.owner,
93-
repo: context.repo.repo,
94-
pull_number: prNumber
95-
});
96-
const currentPRLabels = pr.labels.map(l => l.name);
97-
const combinedLabels = Array.from(new Set([...currentPRLabels, ...issueLabels]));
98-
99-
await github.rest.issues.addLabels({
92+
console.log(`Syncing metadata from Issue #${issueNumber} to PR #${prNumber}`);
93+
94+
// --- Sync Labels ---
95+
const issueLabels = issue.labels.map(l => l.name);
96+
const { data: pr } = await github.rest.pulls.get({
97+
owner: context.repo.owner,
98+
repo: context.repo.repo,
99+
pull_number: prNumber
100+
});
101+
const currentPRLabels = pr.labels.map(l => l.name);
102+
const combinedLabels = Array.from(new Set([...currentPRLabels, ...issueLabels]));
103+
104+
await github.rest.issues.addLabels({
105+
owner: context.repo.owner,
106+
repo: context.repo.repo,
107+
issue_number: prNumber,
108+
labels: combinedLabels
109+
});
110+
console.log(`Labels applied: ${combinedLabels.join(', ')}`);
111+
112+
// --- Sync Milestone ---
113+
if (issue.milestone) {
114+
await github.rest.issues.update({
100115
owner: context.repo.owner,
101116
repo: context.repo.repo,
102117
issue_number: prNumber,
103-
labels: combinedLabels
118+
milestone: issue.milestone.number
104119
});
105-
console.log(`Labels applied: ${combinedLabels.join(', ')}`);
106-
107-
// --- Sync Milestone ---
108-
if (issue.milestone) {
109-
await github.rest.issues.update({
110-
owner: context.repo.owner,
111-
repo: context.repo.repo,
112-
issue_number: prNumber,
113-
milestone: issue.milestone.number
114-
});
115-
console.log(`Milestone synced: ${issue.milestone.title}`);
116-
}
117-
118-
// --- Optional: Add a comment on PR ---
119-
await github.rest.issues.createComment({
120-
owner: context.repo.owner,
121-
repo: context.repo.repo,
122-
issue_number: prNumber,
123-
body: `✅ Synchronized metadata from Issue #${issueNumber}:\nLabels: ${issueLabels.join(', ')}\nMilestone: ${issue.milestone ? issue.milestone.title : 'None'}`
124-
});
125-
126-
} catch (error) {
127-
console.error(`Error syncing issue #${issueNumber} to PR #${prNumber}:`, error.message);
120+
console.log(`Milestone synced: ${issue.milestone.title}`);
128121
}
122+
123+
// --- Add a comment on PR ---
124+
await github.rest.issues.createComment({
125+
owner: context.repo.owner,
126+
repo: context.repo.repo,
127+
issue_number: prNumber,
128+
body: `✅ Synchronized metadata from Issue #${issueNumber}:\nLabels: ${issueLabels.join(', ')}\nMilestone: ${issue.milestone ? issue.milestone.title : 'None'}`
129+
});
129130
}

0 commit comments

Comments
 (0)