Skip to content

Latest commit

 

History

History
131 lines (94 loc) · 5.04 KB

File metadata and controls

131 lines (94 loc) · 5.04 KB

GitHub 릴리스 프로세스

이 문서는 vllm-hyperaccel의 릴리스 프로세스를 설명합니다. 모든 릴리스는 자동화된 스크립트와 GitHub Actions를 통해 수행됩니다.

사전 요구사항

  • 메인 브랜치에서 작업하고 있어야 합니다
  • 작업 디렉토리가 깨끗해야 합니다 (커밋되지 않은 변경사항이 없어야 함)
  • Python 3.10+ 및 uv가 설치되어 있어야 합니다

릴리스 단계

1. 버전 범프 및 릴리스 브랜치 생성

버전 범프 스크립트를 사용하여 버전을 업데이트하고 릴리스 브랜치를 생성합니다:

옵션 1: 시맨틱 버전 범프

# 패치 버전 범프 (x.y.Z)
python scripts/release/bump_up_version.py --micro --release-branch

# 마이너 버전 범프 (x.Y.0)
python scripts/release/bump_up_version.py --minor --release-branch

# 메이저 버전 범프 (X.0.0)
python scripts/release/bump_up_version.py --major --release-branch

옵션 2: 추가 태그 설정 (dev/rc 버전 등)

# 개발 버전 (예: 현재 버전에 .dev1 추가)
python scripts/release/bump_up_version.py --additional-tag=".dev1" --release-branch

# 릴리스 후보 버전 (예: 현재 버전에 rc1 추가)
python scripts/release/bump_up_version.py --additional-tag="rc1" --release-branch

# 알파/베타 버전 (예: 현재 버전에 a1, b1 추가)
python scripts/release/bump_up_version.py --additional-tag="a1" --release-branch
python scripts/release/bump_up_version.py --additional-tag="b1" --release-branch

주의: --major, --minor, --micro 옵션들은 한 번에 하나씩만 사용할 수 있습니다.

옵션 3: 드라이런 (변경사항 미리보기)

# 실제 변경 없이 어떤 변경이 일어날지 확인
python scripts/release/bump_up_version.py --minor --dry-run

2. 스크립트 동작 설명

스크립트는 다음 작업을 자동으로 수행합니다:

  1. 버전 업데이트: pyproject.toml 파일의 version 필드를 새 버전으로 업데이트
  2. 릴리스 브랜치 생성: release/v<version> 형태의 브랜치 생성
  3. 변경사항 커밋: 버전 변경사항을 커밋 (Bump up version to <version> for release)
  4. 브랜치 푸시: 릴리스 브랜치를 origin에 푸시

3. Pull Request 생성

릴리스 브랜치가 생성되면:

  1. GitHub에서 release/v<version> 브랜치를 main 브랜치로 머지하는 Pull Request를 생성합니다
  2. PR 제목은 Release v<version> 형태로 작성합니다
  3. PR 설명에는 주요 변경사항과 릴리스 노트를 포함합니다

4. 자동화된 CI/CD 파이프라인

Pull Request가 생성되면 GitHub Actions가 자동으로 실행됩니다:

Prepare-Release 워크플로우 (PR 생성 시)

  • 릴리스 브랜치에 대한 빌드 테스트 실행
  • Python 3.10, 3.11, 3.12 버전에서 유닛 테스트 실행
  • 패키지 빌드 검증

Release 워크플로우 (PR 머지 시)

  • Git 태그 생성 (v<version>)
  • 패키지 빌드 (uv build)
  • PyPI에 wheel 파일 업로드
  • GitHub Release 생성 (자동 릴리스 노트 포함)

5. 버전 규칙

  • 버전 문자열은 Python Versioning 규칙을 따라야 합니다
  • 정식 릴리스: Local version은 허용되지 않습니다 (예: 1.3.4+cu121 형태 금지)
  • 시맨틱 버전 규칙:
    • MAJOR: 호환되지 않는 API 변경
    • MINOR: 기존 호환성을 유지하면서 기능 추가
    • PATCH: 기존 호환성을 유지하면서 버그 수정
  • Pre-release 버전 지원:
    • dev: 개발 버전 (예: 1.2.3.dev1)
    • a/alpha: 알파 버전 (예: 1.2.3a1)
    • b/beta: 베타 버전 (예: 1.2.3b1)
    • rc: 릴리스 후보 (예: 1.2.3rc1)

예제 워크플로우

정식 릴리스

# 1. 현재 버전 확인
cat pyproject.toml | grep version

# 2. 마이너 버전 범프 (예: 0.1.0 -> 0.2.0)
python scripts/release/bump_up_version.py --minor --release-branch

# 3. GitHub에서 PR 생성
# 4. 리뷰 및 승인
# 5. PR 머지 시 자동으로 릴리스 완료

Pre-release 버전 (두 단계 프로세스)

# 릴리스 후보 버전 (예: 0.1.0 -> 0.2.0rc1)
python scripts/release/bump_up_version.py --minor --additional-tag="rc1" --release-branch

# 또는 개발 버전 (예: 0.1.0 -> 0.2.0.dev1)
python scripts/release/bump_up_version.py --minor --additional-tag=".dev1" --release-branch

# 또는 베타 버전 (예: 0.2.0 -> 0.2.0b1)
python scripts/release/bump_up_version.py --minor --additional-tag="b1" --release-branch

참고: 버전 범프와 추가 태그는 별도의 명령어로 실행해야 합니다.

트러블슈팅

  • 작업 디렉토리가 깨끗하지 않은 경우: 변경사항을 커밋하거나 스태시한 후 다시 시도
  • 메인 브랜치가 아닌 경우: git checkout main으로 메인 브랜치로 이동
  • 권한 오류: GitHub 토큰이 올바르게 설정되어 있는지 확인
  • 빌드 실패: 의존성과 테스트가 모두 통과하는지 확인