リリース手順ガイド
version bump → CI → PR → merge → vtag
の一連のリリースフローを管理する。ブランチ戦略は /branch-management、CI詳細は
/local-ci を参照。
連続マージ禁止
誤マージ防止のため、各PR作成後にユーザーの明示的指示を待ってから次のマージに進む。
- 禁止: 指示なし連続マージ、曖昧な指示での main 直行、独自判断の develop→main マージ
- 正: 各PR後に報告→「develop まで」「main まで」等の明示指示を確認→vtag も指示待ち
バージョン管理
CIで一致を自動チェックするため、deno.json(JSRバージョン)と
src/version.ts(定数)の2ファイルを deno task bump-version で同時更新する。
deno task bump-version # release/* ブランチ名から自動検出
deno task bump-version 1.2.3 # 明示指定も可
バージョン番号: パッチ(x.y.Z)=バグ修正、マイナー(x.Y.0)=後方互換の新機能、メジャー(X.0.0)=破壊的変更。
リリースフロー
sequenceDiagram
participant R as release/x.y.z
participant D as develop
participant M as main
participant T as vtag
R->>R: 1. bump-version → 2. ci → 3. commit & push
R->>D: 4. PR(release→develop) → 5. CI pass → merge
D->>M: 6. PR(develop→main) → 7. CI pass → merge (JSR auto-publish)
M->>T: 8. git tag vx.y.z origin/main
R->>R: 9. branch delete (local + remote)
ステップ 1: バージョンアップ
# 新規作成: git checkout develop && git checkout -b release/x.y.z
# 既存: git checkout release/x.y.z
deno task bump-version
grep '"version"' deno.json
grep 'export const BREAKDOWN_LOGGER_VERSION' src/version.ts
ステップ 2: ローカルCI + GitHub CI 事前再現
deno task ci に加え、GitHub CI固有の差分を事前に潰す。詳細は /local-ci
参照。
deno task ci # 基本CI
deno fmt --check # md含む全ファイルfmt
deno test --allow-env --allow-read --allow-write # CI同等の権限フラグ
# version-check: deno.json >= 最新タグ
git fetch --tags
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
CURRENT="v$(grep '"version"' deno.json | head -1 | sed 's/.*"\([0-9.]*\)".*/\1/')"
echo "deno.json=$CURRENT, latest_tag=$LATEST_TAG"
v1.1.0での教訓:
| 見落とし | 事前チェック |
|---|---|
| md の fmt 差分 | deno fmt --check |
| テスト権限不足(CI は制限付き) | CI と同じフラグでテスト |
| version-check fail(deno.json < 最新タグ) | タグと deno.json の比較 |
| publish.yml と test.yml のフラグ乖離 | 両 yml の test フラグを目視 |
ステップ 3: コミット & プッシュ
git add deno.json src/version.ts
git commit -m "chore: bump version to x.y.z"
git push -u origin release/x.y.z
ステップ 4-5: release/* → develop
gh pr create --base develop --head release/x.y.z \
--title "Release x.y.z: <変更概要>" \
--body "## Summary\n- <変更点>\n\n## Version\n- x.y.z"
gh pr checks <PR番号> --watch # CI全pass待ち
gh pr merge <PR番号> --merge
ステップ 6-7: develop → main
gh pr create --base main --head develop \
--title "Release x.y.z" \
--body "Release version x.y.z to production"
gh pr checks <PR番号> --watch # CI全pass待ち
gh pr merge <PR番号> --merge # JSR publish 自動実行
ステップ 8: vtag 作成
vtag は main コミットに付与するため、fetch 後に origin/main を指定する。
git fetch origin main
git tag vx.y.z origin/main
git push origin vx.y.z
ステップ 9: マージ済みブランチ削除
main マージ完了 + vtag 作成済みの release/* を削除する。削除基準の詳細は
/branch-management 参照。
# 削除対象の確認
git branch --merged main | grep 'release/'
git branch -r --merged origin/main | grep 'release/'
# 削除実行
git branch -D release/x.y.z
git push origin --delete release/x.y.z
ドキュメント更新
リリース前に /update-docs で必要なドキュメントを更新する:
CLI変更→--help必須、新機能→README、設定変更→スキーマ説明。
CI バージョンチェック
| ワークフロー | チェック内容 | 失敗時メッセージ |
|---|---|---|
| test.yml | deno.json と version.ts の一致(全ブランチ) | Version mismatch: deno.json=X, version.ts=Y |
| test.yml | ブランチ名とバージョンの一致(release/*のみ) | Branch version mismatch: branch=X, deno.json=Y |
| version-check.yml | deno.json >= 最新 git タグ | deno.json version ($CURRENT) is older than latest tag |
失敗時は deno task bump-version で一括修正してコミット・プッシュする。
トラブルシューティング
| 症状 | 原因と対処 |
|---|---|
| GitHub CI fail | gh pr checks → gh run view <run-id> --log-failed → release/* で修正 & push |
| publish.yml だけ fail | test.yml と publish.yml の test フラグ不一致 → grep -n 'deno test' .github/workflows/{test,publish}.yml で比較して同期 |
| JSR publish スキップ | deno.json バージョンが既存と同じ → バージョンを上げて再リリース |
| vtag が古いコミット | git tag -d vx.y.z && git push origin :refs/tags/vx.y.z → git tag vx.y.z origin/main && git push origin vx.y.z |
クイックリファレンス
1. deno task bump-version # deno.json + version.ts 更新
2. deno task ci && deno fmt --check # ローカルCI + fmt
3. deno test --allow-env --allow-read --allow-write # CI同等テスト
4. git commit & push
5. gh pr create (release→develop) → checks → merge
6. gh pr create (develop→main) → checks → merge # JSR auto-publish
7. git tag vx.y.z origin/main && git push origin vx.y.z
8. git branch -D release/x.y.z && git push origin --delete release/x.y.z
関連: /local-ci /ci-troubleshooting /branch-management /git-gh-sandbox /update-docs
Converted and distributed by TomeVault — claim your Tome and manage your conversions.