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に含めて、マージを1回にしてからタグを付けます。
- この作業をカバーする既存の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テストがグリーンになるまで監視
ローカルの 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ワークフローのステータス