Skip to content

ci: タグを push したらリリースする - #67

Merged
5ym merged 1 commit into
mainfrom
ci/tag-release
Oct 14, 2026
Merged

5ym merged 1 commit into
mainfrom
ci/tag-release

Conversation

@5ym

@5ym 5ym commented Oct 14, 2026

Copy link
Copy Markdown
Contributor
  • v1.2.3 の形のタグを push すると、その版で MSI を作ってリリースする。版はタグから -p:Version と WiX の Version に渡す
  • csproj の <Version> は 0.0.0 にして、手で上げない
  • 署名の鍵を使うので、main に入っているコミットに打たれたタグだけを出す(git merge-base --is-ancestor)
  • main へのマージだけではリリースしない

🤖 Generated with Claude Code

https://claude.ai/code/session_01QpDYXaosTCf5Q41gbCw8qt

@claude

claude Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Claude finished @5ym's task in 28s —— View job


レビュー結果

全体として、タグ起点のリリースへの切り替えは筋が通っています。タグの形式を正規表現で検証し、merge-base --is-ancestor で main への包含を確かめ、版を -p:Version と WiX に渡す流れに、致命的な不具合は見つかりませんでした。${{ steps.version.outputs.version }} を run: に直接埋め込んでいますが、値は直前に ^v\d+\.\d+\.\d+$ で検証済みなので、スクリプトインジェクションの心配はありません。fetch-depth: 0 で origin/main を参照できる点、--verify-tag で push 済みのタグを使う点も妥当です。

指摘は次の 3 点です。

1. 要確認: check.yml が csproj の版を読んで WiX に渡している

.github/workflows/check.yml:65 は server/Mado.csproj の <Version> を読み、-d Version=$version で MSI を作っています。この PR で値が 0.0.0 になるため、PR の CI は Version=0.0.0 の MSI を作ることになります。WiX や MSI が 0.0.0 を受け付けるかは、手元では確かめていません。拒否するなら CI が落ちます。受け付けるなら問題ありません。この PR の CI 結果を見て確認してください。落ちる場合は -d Version=0.0.1 のように固定値にするのが簡単です。

2. 設計: release 出力と各ステップの if: が不要になった

release=true を常に出力しているので、以降の if: steps.version.outputs.release == 'true' は必ず真です。タグが不正、または main に無い場合は throw でジョブごと失敗します。release 出力と if: を全部外すと、差分が減って読みやすくなります。

3. 運用: 任意のコミットにタグを打てる点(要確認)

merge-base の検査は、main に入っていれば過去の古いコミットでも通ります。タグを打てる人は、古い版のコードに新しい版番号を付けて、署名つきでリリースできます。Updater.cs は版の大小で更新を判断するので、攻撃者にとっての旨味は小さいはずです。それでも署名鍵を使う以上、リポジトリ設定で v* のタグ作成を制限する(tag ruleset)ことをおすすめします。コードでは防げないので、運用の話です。

補足(問題ではありません):

  • 以前は同じ版が二重にリリースされないよう事前確認していました。今は gh release create が失敗することで防いでいます。ただし、失敗する前に署名と attestation まで進みます。
  • v1.2.3-rc1 のようなプレリリースタグは、正規表現で弾かれます。意図通りなら問題ありません。
  • テストの追加はありません。ワークフローの変更なので妥当です。初回のタグ push で実際に動かして確認してください。

@5ym
5ym merged commit a928119 into main Oct 14, 2026
3 checks passed
@5ym
5ym deleted the ci/tag-release branch October 14, 2026 04:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant