Description 작업 배경
MUDDA는 main을 운영·배포 안정 브랜치이자 GitHub 기본 브랜치로 유지하고, 기능 PR 대부분을 develop에 병합하는 Git Flow를 사용합니다.
GitHub 기본 closing keyword는 기본 브랜치 대상 PR에서만 자동으로 동작하므로, develop 대상 PR의 Closes #N, Fixes #N, Resolves #N이 병합 후에도 Issue를 종료하지 않는 문제가 있습니다.
목표
develop을 base로 하는 PR이 실제로 병합된 pull_request.closed 이벤트에서만 동작합니다.
PR 본문의 공식 closing keyword(close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved)를 대소문자와 콜론 표기 변형까지 인식합니다.
명시적으로 연결된 같은 저장소의 열린 Issue만 검증 후 completed 사유로 종료합니다.
PR 본문에 없는 Issue 번호를 추측하지 않으며, PR 제목·브랜치·커밋 메시지의 번호는 사용하지 않습니다.
안전성 및 멱등성
contents: read, pull-requests: read, issues: write만 사용합니다.
GITHUB_TOKEN만 사용하고 PAT·추가 Secret을 사용하지 않습니다.
pull_request_target을 사용하지 않고, PR Head 코드를 Checkout하거나 실행하지 않습니다.
코드 블록·인라인 코드·HTML 주석·URL·다른 저장소 참조와 비공식 축약형은 종료 대상으로 처리하지 않습니다.
닫힌 PR, develop 이외의 base, 미병합 PR, 이미 닫힌 Issue, Pull Request 번호는 건너뜁니다.
자동화 Comment marker로 동일 PR의 중복 Comment를 방지하고, 여러 keyword의 중복 Issue 참조도 한 번만 처리합니다.
처리 실패 Issue는 Job Summary와 로그에 남기고 Workflow를 실패 상태로 종료합니다.
구현 범위
부트스트랩 제약
Workflow가 기본 브랜치에 존재해야 안정적으로 활성화되므로 작업 브랜치와 PR base는 최신 main으로 합니다.
develop의 미출시 기능을 main에 병합하지 않습니다.
자동화 PR이 main에 병합된 이후부터 Workflow가 활성화됩니다.
자동화 PR 병합 후 main → develop 동기화가 필요합니다.
검증 및 완료 조건
제외 범위
기본 브랜치 변경, develop 전체의 main 릴리스, Branch Protection 우회
기존 기능 코드·배포 파일·Docker 설정 변경
GitHub Actions CD·Discord Webhook 변경
PR 자동 병합, main·develop 직접 Push
PR 제목·브랜치·커밋 기반 또는 비공식 Issue 참조 자동 종료
대상 브랜치: main
Reactions are currently unavailable
You can’t perform that action at this time.
작업 배경
main을 운영·배포 안정 브랜치이자 GitHub 기본 브랜치로 유지하고, 기능 PR 대부분을develop에 병합하는 Git Flow를 사용합니다.develop대상 PR의Closes #N,Fixes #N,Resolves #N이 병합 후에도 Issue를 종료하지 않는 문제가 있습니다.목표
develop을 base로 하는 PR이 실제로 병합된pull_request.closed이벤트에서만 동작합니다.close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved)를 대소문자와 콜론 표기 변형까지 인식합니다.completed사유로 종료합니다.안전성 및 멱등성
contents: read,pull-requests: read,issues: write만 사용합니다.GITHUB_TOKEN만 사용하고 PAT·추가 Secret을 사용하지 않습니다.pull_request_target을 사용하지 않고, PR Head 코드를 Checkout하거나 실행하지 않습니다.develop이외의 base, 미병합 PR, 이미 닫힌 Issue, Pull Request 번호는 건너뜁니다.구현 범위
develop병합 PR의 Issue 자동 종료 WorkflowCloses #이슈번호사용 예시 보완부트스트랩 제약
main으로 합니다.develop의 미출시 기능을main에 병합하지 않습니다.main에 병합된 이후부터 Workflow가 활성화됩니다.main → develop동기화가 필요합니다.검증 및 완료 조건
main대상 Draft PR을 생성하고 병합하지 않습니다.제외 범위
develop전체의main릴리스, Branch Protection 우회main·develop직접 Push대상 브랜치:
main