Skip to content

リリース手順 (yarn release)

WingStats Manager(broadcast-Overlay)のリリース作業を yarn release 1 コマンドに集約するためのドキュメント。push と tag push は依然として人間の手作業で、CLAUDE.md の「リリース管理」原則を構造的に守る前提で書かれている。

🚧 自動化の範囲: version bump / CHANGELOG 追記 / release commit / annotated tag 作成。 🚫 自動化しない: git pushgit push --tagspackage.json 直接編集、CHANGELOG.md 直接編集(このスクリプト経由でのみ許可)。

0. 前提

  • ブランチが main(または --allow-branch <name> で明示的に許可)
  • working tree がクリーン(既ステージ / 未追跡変更なし)
  • yarn typecheck / yarn lint / yarn test:unit / yarn build がローカルで pass
  • git fetch --tags が走る(スクリプトが自動で叩く)
  • 直近 tag 〜 HEAD に 少なくとも 1 つの Conventional Commitfeat: / fix: / perf: 等)がある

1. 基本手順

bash
# 1) どの type で bump するかを決めてコマンドを叩く
yarn release patch           # 1.2.3 → 1.2.4
yarn release minor           # 1.2.3 → 1.3.0
yarn release major           # 1.2.3 → 2.0.0
yarn release --version 1.5.0 # 明示指定(現状より大きい値のみ)

# 2) 事前チェックが順に流れる
#    ✓ branch / clean tree / fetch / tag duplicate / yarn ci 系

# 3) CHANGELOG.draft.md がエディタで開く
#    Conventional Commits を section 別に分類した markdown が入っている
#    必要に応じて文面を整え、エディタを閉じて保存

# 4) スクリプトが続きを実行
#    - package.json の version 書き換え
#    - CHANGELOG.md の先頭にドラフトを挿入
#    - release commit + annotated tag を作成(local のみ)

# 5) 「次のコマンド」が表示される
#    git push origin main
#    git push origin v1.2.4
#    → これは **手動で**実行してください

2. オプション

フラグ用途
--no-editエディタを開かずドラフトをそのまま採用(CI / 自動化時のみ推奨)
--dry-runファイル / commit / tag を一切書き換えず、出力だけ確認
--skip-checksyarn typecheck / lint / test:unit / build を skip(直前に手で全部走らせた前提)
--allow-branch <name>main 以外で release を許可(hotfix リハーサル等)
--draft <path>ドラフトの出力先を指定(既定: ./CHANGELOG.draft.md
-h / --helpヘルプ

3. 失敗時の戻し方

スクリプトは 作業内容を消さない設計git reset --hard を使わない)。各失敗ケースの状態:

失敗ポイントスクリプトがやること手動で必要なら
prechecks 失敗何も書き換えていない、そのまま exit 1警告に従って fix
エディタ異常終了CHANGELOG.draft.md を消し、何も書き換えていない
draft が空CHANGELOG.draft.md を消し、何も書き換えていない
ファイル書き換え後の失敗git restore --staged --worktreepackage.json / CHANGELOG.md を HEAD に戻す
commit 後の tag 失敗git reset --soft HEAD^ で release commit を取消 + ファイル復元
Ctrl+C 中断同上(commit があれば soft reset、ファイル変更は restore)

release を完全に取り消したい

push する前なら:

bash
git tag -d vX.Y.Z          # local tag を消す
git reset --soft HEAD^      # release commit を取り消し(変更は staging に残る)
git restore --staged --worktree -- package.json CHANGELOG.md

push 済みで取り消したい場合は、tag を delete + revert commit を別途作成する(ここではフォローしない、慎重に)。

4. push(手動)

スクリプト終了時の表示に従う。必ず両方 push する:

bash
git push origin main
git push origin vX.Y.Z

tag を push すると .github/workflows/release.yml が起動し、GitHub Release + NSIS / Portable build が自動で作られる。tag を push しないとビルドは走らない。

5. CHANGELOG ドラフトの作り方(参考)

scripts/release/generateChangelog.ts の純粋関数で、vX.Y.Z..HEAD の commit を以下のルールで分類する:

commit typesection
feat: / feature:✨ 新機能・アップデート
fix: / revert:🐛 バグ修正
perf: / refactor: / style:🔧 改善
docs: / test: / build: / ci: / chore:🛠 内部 / ドキュメント
type!: または body に BREAKING CHANGE:💥 破壊的変更(最上段に出る)

Merge pull request / Merge branch で始まるコミットと、release: vX.Y.Z 系の自前リリース commit は CHANGELOG に含めない

6. 関連リンク