Holix 發布流程(«сделай релиз»)
當使用者說 сделай релиз(或等效指令)時,端到端執行此管道。不要在 PR 後停止。不要跳過 CI。不要在合併前打標籤。
規範套件規則:RULES.md §8。此技能是操作循環。
前置條件
- 儲存庫:
javded-itres/Holix。預設分支:main。 - 認證:
gh auth status必須已登入。 - 先擷取:
git fetch origin --tags。 - 下一個版本 = 最新的 GitHub 發布 + 修補(
1.0.7→1.0.8),除非使用者要求次要或主要版本。 - 在打標籤前確認版本一致:
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 - 根據實際差異撰寫 Added/Fixed/Tests
- 將
- 推送並開啟 PR →
main:
gh pr create --base main --title "Holix X.Y.Z" --body "$(cat <<'EOF'
## 摘要
發布 Holix X.Y.Z。
## 檢查清單
- [ ] pyproject.toml 和 cli/__init__.py 中的版本一致
- [ ] docs/CHANGELOG.md 有 X.Y.Z 區段
- [ ] CI 通過(ruff + pytest matrix)
合併後:打標籤 `vX.Y.Z`(建立 GitHub Release + PyPI)。
EOF
)"
2) GitHub 測試直到通過
監看 PR 上的 GitHub Actions,不僅是本機 pytest。
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 工作流程狀態