AgentSkillsCN

release

Git Flow 是一套用于发布与版本管理的指南。当您需要发起发布、升级版本,或进行热修复时,这一技能将助您高效完成任务。

SKILL.md
--- frontmatter
name: release
description: Git Flow를 사용한 릴리즈 및 버전 관리 가이드입니다. 릴리즈 요청 시, 버전 업 요청 시, hotfix 필요 시 사용합니다.

Release 가이드

Git Flow와 버전 동기화 스크립트를 사용한 릴리즈 워크플로우입니다.

Semantic Versioning

버전 형식: MAJOR.MINOR.PATCH

유형언제 올림예시
MAJOR호환되지 않는 API 변경1.0.0 → 2.0.0
MINOR하위 호환되는 기능 추가1.0.0 → 1.1.0
PATCH하위 호환되는 버그 수정1.0.0 → 1.0.1

프리릴리즈 버전

  • 1.0.0-alpha.1 - 알파 (내부 테스트)
  • 1.0.0-beta.1 - 베타 (외부 테스트)
  • 1.0.0-rc.1 - 릴리즈 후보

Release 워크플로우

1. 현재 버전 확인

bash
node scripts/sync-versions.mjs --check

2. Release 브랜치 생성

bash
# git flow 사용
git flow release start <version>

# 예: 1.2.0 릴리즈
git flow release start 1.2.0

3. 버전 동기화

bash
# 모든 package.json 버전 업데이트
node scripts/sync-versions.mjs <version>

# 예시
node scripts/sync-versions.mjs 1.2.0

4. 변경사항 커밋

bash
git add -A
git commit -m "chore: update version"

5. Release 완료

bash
# main과 develop에 머지, 태그 생성
git flow release finish <version>

# 푸시 (태그 포함)
git push origin main develop --tags

Hotfix 워크플로우

프로덕션 긴급 버그 수정 시 사용합니다.

1. Hotfix 브랜치 생성

bash
git flow hotfix start <version>

# 예: 1.2.0에서 버그 발견 → 1.2.1
git flow hotfix start 1.2.1

2. 버그 수정 후 버전 동기화

bash
# 수정 작업 완료 후
node scripts/sync-versions.mjs <version>
git add -A
git commit -m "chore: update version"

3. Hotfix 완료

bash
git flow hotfix finish <version>
git push origin main develop --tags

sync-versions.mjs 사용법

명령어

bash
# 버전 동기화 상태 확인
node scripts/sync-versions.mjs --check

# root 버전으로 동기화
node scripts/sync-versions.mjs

# 특정 버전으로 동기화
node scripts/sync-versions.mjs 1.2.0
node scripts/sync-versions.mjs 2.0.0-beta.1

동작

  • package.json (root)
  • apps/*/package.json (모든 앱)

모든 package.json의 version 필드를 동일하게 맞춥니다.

체크리스트

Release 전

  • develop 브랜치 최신 상태
  • 모든 테스트 통과 (pnpm test:ci)
  • 버전 번호 결정 (semver 기준)

Release 후

  • main, develop 브랜치 푸시 완료
  • 태그 푸시 완료
  • 버전 동기화 확인 (--check)

문제 해결

문제해결
git flow 미설치brew install git-flow
버전 불일치node scripts/sync-versions.mjs
태그 충돌git tag -d <tag> 후 재시도
머지 충돌수동 해결 후 git flow release finish 재실행