PR 코드리뷰 마감일을 기반으로 라벨을 자동으로 부착하는 GitHub Action입니다.
| 트리거 | 동작 |
|---|---|
PR 생성 (pull_request: opened) |
생성일 기준으로 D-N 라벨 부착 |
매일 자정 (schedule) |
열린 모든 PR의 라벨을 하루씩 업데이트 |
리뷰 등록 (pull_request_review: submitted) |
리뷰 등록일 기준으로 D-N 라벨 리셋 |
deadline-days: 5 설정 시:
생성일 D+1 D+2 D+3 D+4 D+5 D+6
D-5 → D-4 → D-3 → D-2 → D-1 → D-Day → OVER-DUE
- 라벨이 존재하지 않으면 자동으로 생성합니다.
OVER-DUE상태의 PR은 더 이상 업데이트하지 않습니다.- 리뷰가 등록되면 마감일이 리뷰 등록일 기준으로 리셋됩니다.
skip-draft: true(기본값)설정 시 Draft PR은 라벨 업데이트에서 제외됩니다.
.github/workflows/deadline-labeler.yml 파일을 생성합니다.
name: PR Deadline Labeler
on:
pull_request:
types: [opened]
schedule:
- cron: '0 0 * * *'
pull_request_review:
types: [submitted]
env:
DEADLINE_DAYS: 5 # 마감일 설정 (기본값: 2)
jobs:
label:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Attach label on PR opened
if: github.event_name == 'pull_request'
uses: kkiseug/pr-deadline-labeler@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
base-date: ${{ github.event.pull_request.created_at }}
pr-number: ${{ github.event.pull_request.number }}
deadline-days: ${{ env.DEADLINE_DAYS }}
- name: Update labels on schedule
if: github.event_name == 'schedule'
uses: kkiseug/pr-deadline-labeler@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
deadline-days: ${{ env.DEADLINE_DAYS }}
- name: Reset label on review submitted
if: github.event_name == 'pull_request_review'
uses: kkiseug/pr-deadline-labeler@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
base-date: ${{ github.event.review.submitted_at }}
pr-number: ${{ github.event.pull_request.number }}
deadline-days: ${{ env.DEADLINE_DAYS }}워크플로우에 아래 권한이 필요합니다.
permissions:
issues: write
pull-requests: write| Input | 필수 여부 | 기본값 | 설명 |
|---|---|---|---|
github-token |
✅ 필수 | - | GitHub 접근을 위한 토큰 |
base-date |
❌ 선택 | - | 라벨 계산 기준일 (PR 생성일 또는 리뷰 등록일, cron 시 불필요) |
skip-draft |
❌ 선택 | true |
Draft PR을 라벨 업데이트에서 제외할지 여부 |
pr-number |
❌ 선택 | - | 업데이트할 PR 번호 (없으면 전체 PR 업데이트) |
deadline-days |
❌ 선택 | 2 |
코드리뷰 최대 마감일 |