diff --git a/src/config.ts b/src/config.ts index 5d429c4..3bdc758 100644 --- a/src/config.ts +++ b/src/config.ts @@ -26,7 +26,7 @@ export interface BotConfig { /** 지정 시 이 glob에 매칭되는 파일만 리뷰 */ include: string[] - /** PR open/synchronize 시 자동 리뷰 */ + /** PR open/reopen/ready_for_review 시 자동 리뷰 — 이후 푸시(synchronize)는 재리뷰하지 않는다 */ autoReview: boolean /** 이 심각도 미만은 코멘트하지 않음 */ minSeverity: Severity diff --git a/src/server/handler.ts b/src/server/handler.ts index 46a6096..a3f8f9d 100644 --- a/src/server/handler.ts +++ b/src/server/handler.ts @@ -25,7 +25,8 @@ export interface AcceptedEvent { run: () => Promise } -const PR_ACTIONS = ['opened', 'reopened', 'synchronize', 'ready_for_review'] +/** 자동 리뷰를 돌릴 PR 액션. 푸시(synchronize)만 제외한다 — 커밋을 밀 때마다 다시 돌리지 않는다. */ +const AUTO_REVIEW_PR_ACTIONS = ['opened', 'reopened', 'ready_for_review'] /** * 웹훅 이벤트가 리뷰를 돌릴 가치가 있는지 판단한다. @@ -61,7 +62,7 @@ export function accept(deps: HandlerDeps, eventName: string, payload: RawEvent): } else if (trigger.kind === 'review_comment') { if (!trigger.body.trimStart().startsWith('/') && !hasMention(trigger.body, BOT_MENTION)) return undefined } else if (trigger.kind === 'pull_request') { - if (trigger.draft || !PR_ACTIONS.includes(trigger.action)) return undefined + if (trigger.draft || !AUTO_REVIEW_PR_ACTIONS.includes(trigger.action)) return undefined } return {