Holix 릴리스 («сделай релиз»)은(는) 무엇을 하나요?
사용자가 сделай релиз (또는 이와 동등한 표현)을 말하면, 이 파이프라인을 처음부터 끝까지 실행하십시오. PR 이후에 멈추지 마십시오. CI를 건너뛰지 마십시오. 병합 전에 태그하지 마십시오.
표준 패키지 규칙: RULES.md §8. 이 스킬은 운영 루프입니다.
전제 조건
- 저장소:
javded-itres/Holix. 기본 브랜치:main. - 인증:
gh auth status가 로그인되어 있어야 합니다. - 먼저 가져오기:
git fetch origin --tags. - 다음 버전 = 최신 GitHub 릴리스 + patch (
1.0.7→1.0.8), 사용자가 minor/major를 요청하지 않은 경우. - 태깅 전에 버전 일치 확인:
pyproject.toml[project].versioncli/__init__.py__version__- 최신
gh release list/git tag
- 프로덕션에 rsync/scp/hotfix를 사용하지 마십시오.
main에 태그하는 것만으로 충분합니다: GHAGitHub Release+Publish to PyPI가vX.Y.Z에서 실행됩니다. - 푸시 전에
./scripts/lint.sh(또는--fix)를 실행하십시오.
1) 변경 사항이 포함된 PR
코드 + 버전 범프 + 변경 로그를 동일한 PR에 포함시켜 병합을 한 번만 수행한 다음 태그를 추가하십시오.
- 이 작업을 이미 다루는 열린 PR이 있으면 재사용하고, 누락된 경우 거기에 범프를 추가하십시오.
- 그렇지 않으면 최신
origin/main에서 브랜치를 생성하십시오:release/X.Y.Z(예:release/1.0.8). - 사용자의 커밋되지 않았거나 병합되지 않은 작업을 커밋하십시오 (비밀,
node_modules/, 로컬.env제외). scripts/versioning.py를 사용하여 버전을 범프하십시오 (또는 두 파일을 직접 편집):pyproject.tomlcli/__init__.py
docs/CHANGELOG.md업데이트:## Unreleased노트를## X.Y.Z — YYYY-MM-DD로 이동- 새로운 빈
## Unreleased남기기 - 실제 diff에서 Added/Fixed/Tests 작성
- 푸시하고 PR 열기 →
main:
gh pr create --base main --title "Holix X.Y.Z" --body "$(cat <<'EOF'
## Summary
Release Holix X.Y.Z.
## Checklist
- [ ] Version matches in pyproject.toml and cli/__init__.py
- [ ] docs/CHANGELOG.md has section X.Y.Z
- [ ] CI green (ruff + pytest matrix)
After merge: tag `vX.Y.Z` (creates GitHub Release + PyPI).
EOF
)"
2) GitHub 테스트가 통과할 때까지 대기
로컬 pytest뿐만 아니라 PR의 GitHub Actions를 확인하십시오.
gh pr checks <n> --watch
# 또는
gh run watch <run-id>
실패 시:
gh run view <id> --log-failed(또는 작업 로그).- 코드 / 테스트 / ruff를 수정하십시오.
- 로컬:
./scripts/lint.sh를 실행한 다음 대상 pytest를 실행하십시오. - 커밋, 푸시, 다시 대기.
모든 필수 검사가 통과할 때까지 반복하십시오. 빨간 CI를 병합하지 마십시오. 실패에 제품 결정이 필요한 경우 중단하고 질문하십시오 — 무시하지 마십시오.
3) main에 병합
사용자는 이 명령의 일부로 이미 병합을 승인했습니다.
gh pr merge <n> --merge --delete-branch
사용자가 요청한 경우에만 --squash를 사용하십시오. PR이 MERGED될 때까지 기다리십시오.
그런 다음 git checkout main && git pull origin main.
main에 이제 버전 X.Y.Z가 있는지 확인하십시오.
4) 다음 번호가 지정된 GitHub 릴리스
태그는 반드시 pyproject.toml과 일치해야 합니다. 태그 워크플로가 처리할 수 있으면 수동으로 GitHub 릴리스를 생성하지 마십시오.
git checkout main
git pull origin main
python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])"
git tag vX.Y.Z
git push origin vX.Y.Z
확인:
GitHub Release→ https://github.com/javded-itres/Holix/releases/tag/vX.Y.ZPublish to PyPI
gh run list --branch vX.Y.Z --limit 5
gh release view vX.Y.Z
태그 워크플로가 CHANGELOG에 ## X.Y.Z 섹션이 없어 실패하면 후속 PR에서 수정하고, 말한 후에만 --force-with-lease로 태그를 삭제/재푸시하십시오. 게시된 태그를 다시 작성하는 것보다 새 패치를 선호하십시오.
보고
완료되면 다음으로 응답하십시오:
- PR URL 및 병합 SHA
- 버전
X.Y.Z/ 태그vX.Y.Z - 릴리스 URL
- CI + PyPI 워크플로 상태