Skip to content

ci: 公開を main の CI の成功から起こす - #78

Merged
k163377 merged 2 commits into
mainfrom
ci/publish-from-main-ci
Sep 12, 2026
Merged

k163377 merged 2 commits into
mainfrom
ci/publish-from-main-ci

Conversation

@k163377

@k163377 k163377 commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

リリースのワークフローを、公開の起点・公開の順序・やり直しの 3 点で組み直す。

背景

直近のリリース(2.4.10-0.1.3)で次の 3 つが表面化した。

  • 同じ範囲のテストが 4 回走っていた(版宣言 PR の承認ランとブランチ指定の起動で 2 回、マージ後の main で 1 回、公開ゲートで 1 回)
  • Gradle Plugin Portal への公開が Maven Central より先に出るため、Central へ載るまでの間、解決できない版が Portal に並ぶ
  • 公開の途中で落ちた場合に、どこから再開できるかがジョブに表れていない

変更

ファイル 変更
publish.yml(新設) CD。main の CI の成功(workflow_run)を起点に、タグ付け → Maven Central → Plugin Portal → GitHub Release / API ドキュメント / 次版の PR まで進める
_publish.yml 削除(publish.yml が引き継ぐ)
release.yml 版宣言 PR を出す入口だけに専念。タグ付けと CI のブランチ指定起動をやめ、やり直しても同じ状態へ収束する形にする
ci.yml main の push で走るランを後続の push で取り消さない(コミット毎の結果が要るため)。PR のランは従来どおり取り消す

リリースの流れ

① release (manual) を実行 → 版宣言 PR
② PR の CI を Approve and run(1 回)
③ マージ → main の CI(1 回)=公開の唯一のゲート
④ publish (auto)
     prepare → maven-central → plugin-portal → github-release / docs / next-version
⑤ 次版 PR をマージ(以降の main の CI では何も起きない)
  • 公開の起点: main の CI の成功。公開側でテストは走らせない。テストの実行はリリース 1 回あたり 2 回になる
  • 公開の順序: Maven Central は公開の確定まで自動で行い(publishAndReleaseToMavenCentral)、成果物が repo1 から引けることを確かめてから Plugin Portal へ出す。待つのは同期だけで、60 秒間隔・50 分で打ち切る
  • やり直し: 各ジョブが公開先の状態を見て済んでいれば飛ばす(タグは同一コミットなら再利用・Central / Portal は POM が引ければ skip・Release は存在すれば skip・次版 PR は open なら skip)。失敗したジョブの再実行だけで続きから完了できる
  • 公開まわりの手作業は無くなり、残るのはワークフローの起動・CI の承認・PR のマージのみ

検証

  • actionlint(YAML・式・shellcheck): 指摘なし
  • run スクリプトの空撃ち: 版宣言の検出・タグ判定の 3 分岐・公開先 URL の組み立て(公開済みの版で 200、未公開の版で 404 を確認)・到達待ちループの両分岐・次版の計算・CHANGELOG のアンカー・PR 本文
  • 版の導出に使う Gradle の問い合わせ(properties --property version / group / 子プロジェクトの name)の実行確認

注意

workflow_run は本 PR が main に載ってから有効になるため、初回適用は次のリリースになる。

🤖 Generated with Claude Code

k163377 and others added 2 commits September 12, 2026 21:40
版宣言 PR のマージ後、main の CI が green になった時点を公開の起点とする。
公開側で同じ範囲のテストを走らせ直していたゲートは落とし、テストの実行は
PR と main のそれぞれ 1 回に収める。版更新 PR への CI のブランチ指定起動も
やめ、承認待ちで止まっているラン自体を起こす形に寄せる。

Gradle Plugin Portal への公開は、Maven Central の成果物が repo1 から引ける
ことを確かめてから行う。公開したプラグインは利用者のビルドでコンパイラ
プラグインを Central から解決するため、先に Portal へ出すと解決できない版が
並ぶ。Central は公開の確定まで自動で行い、待つのは repo1 への同期だけとする。

各ジョブは公開先の状態を見て済んでいれば飛ばすため、失敗したジョブの再実行
だけで公開を完了できる。GitHub Release・API ドキュメント・次版の PR は
両方の公開先へ出た後に置き、入手できない版が記録に立たないようにする。

main の CI はコミット毎の結果が要るため、後続の push では取り消さない。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
公開まで進まなかった版を宣言し直せるよう、開いている PR があれば作り直さず、
閉じた PR のブランチが残っている場合は内容を置き換える。既定ブランチが既に
その版を宣言している場合は、書き換えが空になることを見て明示的に落とす。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@k163377
k163377 marked this pull request as ready for review September 12, 2026 12:49
@k163377
k163377 merged commit 92a5b36 into main Sep 12, 2026
13 checks passed
@k163377
k163377 deleted the ci/publish-from-main-ci branch September 12, 2026 12:49
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