콘텐츠로 이동

릴리스 자동화 (전 타입 공통)

basic을 포함한 모든 타입에 같은 릴리스 자동화가 설치됩니다. 타입별 문서에는 그 위에 추가로 설치되는 것만 적었습니다.

워크플로우 트리거 하는 일
PROJECT-COMMON-AUTO-CHANGELOG-CONTROL 개발 브랜치 → 릴리스 브랜치 PR 버전 확정, 릴리스 노트와 CHANGELOG 작성, automerge. pr-flow 전용.
PROJECT-COMMON-RELEASE-PUBLISH 릴리스 브랜치 push, workflow_dispatch 태그 vX.Y.Z와 GitHub Release. trunk-based에서는 버전 승격과 CHANGELOG 작성까지 합니다.
PROJECT-COMMON-VERSION-CONTROL 릴리스 브랜치 push (CHANGELOG.*, version.yml만 바뀐 push 제외), workflow_dispatch 직접 push에 대한 patch 승격 안전망. pr-flow 전용.
PROJECT-COMMON-RELEASE-PR-MERGED 릴리스 PR이 릴리스 브랜치에 머지됨(pull_request_target) squash·rebase 머지 결과에 [skip ci]가 있어 push 워크플로우가 건너뛰어졌을 때 RELEASE-PUBLISH를 실행합니다. PR 코드를 checkout하지 않습니다. pr-flow 전용.
PROJECT-COMMON-README-VERSION-UPDATE 릴리스 브랜치 push, workflow_dispatch README.md의 <!-- AUTO-VERSION-SECTION --> 아래 버전 줄 갱신
PROJECT-COMMON-AI-PR-SUMMARY 릴리스 브랜치 대상 PR 요약 댓글. 릴리스 PR은 건너뜀.
PROJECT-COMMON-ISSUE-HELPER 이슈 생성, 제목 수정 정규화한 브랜치명과 커밋 메시지를 댓글로 안내

PROJECT-COMMON-ISSUE-HELPER는 브랜치도 만들 수 있습니다. env 섹션의 ISSUE_HELPER_CREATE_BRANCH를 "true"로 바꾸세요. 이슈를 열 때마다 브랜치가 생기지 않도록 기본값은 "false"입니다.

.github/scripts/에 복사됩니다. 표준 라이브러리만 쓰는 Python입니다.

스크립트 역할
version_manager.py 버전 읽기·승격, 타입별 버전 파일 동기화
changelog_manager.py 요약 엔진 체인, CHANGELOG.json / CHANGELOG.md
truncate_release_notes.py 릴리스 노트를 길이 제한에 맞게 자름 (Flutter 스토어·Firebase 워크플로우에서 사용)
issue_helper.py 이슈의 브랜치명과 커밋 메시지

필수는 없습니다. 아래는 모두 선택입니다:

이름 종류 용도
WORKFLOW_PAT Secret automerge → Release를 더 빠르게, release: published로 다른 워크플로우를 트리거. 조직 bot/machine 계정으로 발급 (scopes: repo, workflow)
AI_API_KEY Secret OpenAI 호환 API (아래 Variable 둘도 필요)
AI_API_BASE_URL Variable 엔드포인트 base URL
AI_MODEL Variable 모델 이름

Copilot 요약은 Secret이 필요 없습니다. copilot_ai: true일 때 GITHUB_TOKEN을 씁니다. 요약 엔진을 참고하세요.

  • merge commit 허용. 릴리스 PR은 merge commit으로 automerge됩니다.
  • Workflow permissions는 Read로 둬도 됩니다. 설치된 워크플로우는 모두 permissions를 직접 선언합니다.

npx project-auto-wizard --mode doctor가 둘 다 점검합니다. doctor를 참고하세요.