Flower 릴리즈 하기

이 문서는 현재 릴리즈 과정을 설명합니다. 이는 앞으로 변경될 수도 있습니다.

릴리즈 동안에

릴리즈의 버전 번호는 ``pyproject.toml``에 명시되어 있습니다. Flower의 새 버전을 릴리즈하려면 다음 작업이 순서대로 수행되어야 합니다:

  1. 모든 새로운 변경 사항을 변경 로그에 추가하기 위해``python3 src/py/flwr_tool/update_changelog.py <YOUR_GH_TOKEN>``을 실행합니다 (변경 로그가 만족스러워질 때까지 수동으로 변경해도 됩니다).

  2. 모든 변경 사항으로 변경 로그가 업데이트되면,``./dev/prepare-release-changelog.sh v<NEW_VERSION>``을 실행합니다. 여기서 ``<NEW_VERSION>``은 ``pyproject.toml``에 명시된 버전 번호입니다 (앞에 ``v``가 추가된 것을 주의하세요). 이 명령어는 변경 로그의 ``Unreleased``헤더를 해당 버전과 현재 날짜로 교체하고, 기여자들에게 감사 메시지가 추가됩니다. 이러한 변경 사항으로 pull request합니다.

  3. pull request가 병합되면, PR이 병합되는 즉시 버전 번호로 릴리즈 커밋에 태그를 지정합니다:git tag v<NEW_VERSION> (버전 번호 앞에 v``가 추가된 것을 확인), 다음 ``git push --tags. 이렇게 하면 올바른 아티팩트와 변경 로그의 관련 부분이 포함된 초안 릴리즈가 GitHub에 생성됩니다.

  4. GitHub에서 릴리즈 초안을 확인하고, 모든 것이 양호하면 게시하세요.

릴리즈 후에

다음 변경 사항이 포함된 pull request를 만듭니다:

  1. ``pyproject.toml``의 마이너 버전을 하나씩 늘립니다.

  2. 필요한 경우 현재 버전 번호가 포함된 모든 파일을 업데이트합니다.

  3. changelog.md``에 ``Unreleased 섹션을 새로 추가합니다.

pull request를 같은 날(즉, 새로운 nightly 릴리즈가 PyPI에 게시되기 전에) 병합하세요.

사전 릴리즈 게시

사전 릴리즈 이름

PyPI는 사전 릴리즈(알파, 베타, 릴리스 후보)를 지원합니다. 사전 릴리즈는 반드시 다음 명명 패턴 중 하나를 사용해야 합니다:

  • Alpha: MAJOR.MINOR.PATCHaN

  • Beta: MAJOR.MINOR.PATCHbN

  • Release candidate (RC): MAJOR.MINOR.PATCHrcN

예시:

  • 1.0.0a0

  • 1.0.0b0

  • 1.0.0rc0

  • 1.0.0rc1

이는 PEP-440 및 Python Packaging Authority (PyPA)의 권장 사항과 일치합니다:

PyPA에서 정의한 접근 방식은 SemVer 2.0.0 사양과 호환되지 않으며, 자세한 내용은`Semantic Versioning 관리 사양 <https://semver.org/spec/v2.0.0.html#spec-item-11>`_ (특히 항목 11이 우선순위)을 참조하세요.

사전 릴리즈 분류

다음 사전 릴리즈를 알파, 베타 또는 릴리스 후보라고 불러야 하나요?

  • RC: 기능 완료, 알려진 문제 없음(다음 stable 릴리즈에서 “수정되지 않음”으로 분류된 문제 제외) - 문제가 나타나지 않으면 다음 stable 릴리즈가 됩니다

  • 베타: 기능 완료, 알려진 문제 발생 가능

  • 알파: 기능 미완성, 알려진 문제가 있을 수 있음