ssf-2025-ana/.github/workflows/pr-merge-status.yml
2025-09-13 16:18:28 +09:00

55 lines
No EOL
1.7 KiB
YAML

name: PR Status - When Merged
on:
pull_request:
types: [closed]
jobs:
handle-merge:
# PR이 closed 되었을 때, merged 여부를 검사하여 merged=true인 경우에만 실행
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Update status to done
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GH_TOKEN }}
script: |
const prNumber = context.payload.pull_request.number;
const labelsToRemove = [
"status: in progress",
"status: review required",
"status: change required",
"status: waiting merge"
];
const { data: currentLabels } = await github.rest.issues.listLabelsOnIssue({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber
});
for (const labelName of labelsToRemove) {
if (currentLabels.some(l => l.name === labelName)) {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
name: labelName
}).catch(err => {
if (err.status !== 404) throw err;
});
}
}
// 병합이 완료된 PR에 "status: done" 라벨을 부착
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: ["status: done"]
});