Skip to content

ci: 必須チェック化へ向けて起動条件と結果集約を整理する - #19

Merged
k163377 merged 1 commit into
mainfrom
ci/required-check-gate
Aug 1, 2026
Merged

ci: 必須チェック化へ向けて起動条件と結果集約を整理する#19
k163377 merged 1 commit into
mainfrom
ci/required-check-gate

Conversation

@k163377

@k163377 k163377 commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

main のブランチ保護で必須チェックを使えるようにするための CI 側の対応。

変更点

変更 内容
pull_request トリガ paths を撤去(push(main)側は従来どおり paths で絞る)
changes ジョブ(新規) dorny/paths-filter で PR の変更範囲を判定。push では判定せず常に true
重量 6 ジョブ needs: changes + if で分岐(対象外の PR ではスキップ)
ci-gate ジョブ(新規) 全ジョブを needsif: always() で結果を判定。スキップは成功扱い

背景

  • paths でスキップされたワークフローはチェックが報告されず、必須チェックが pending のまま残ってマージがブロックされる。このため PR 側は常に起動させ、判定をジョブへ降ろした
  • 必須チェックへ matrix を含む個別ジョブ名を列挙すると、shard 数の変更で保護設定が存在しない名前を要求し、マージ不能か無防備のどちらかへ静かに倒れる。指定先は ci-gate の 1 本へ集約した

dorny/paths-filter を master のコミットへ固定している理由

ソース階層へ README を置く運用を想定し、allowlist からの .md 除外は PR 側でも維持したい。
除外を意図どおり評価する predicate-quantifier: some-with-excludes が最新リリース v4.0.2 へ含まれないため、当該アクションのみ master のコミット(dist ビルド済み)を指す。

  • リリースへ入り次第、タグの SHA へ戻す
  • Dependabot が出す v4.0.2 への「更新」は実質のロールバック。取り込むと未対応値としてジョブが失敗する(除外がサイレントに外れることはない)

検証

  • ワークフローの YAML パースとジョブグラフを確認
  • アクションの判定ロジックを picomatch で再現し、23 ケースで期待どおり(**/src/** 配下の README.md は除外・フィクスチャの .txt は対象・ルート直下の build.gradle.kts / gradle.properties は対象)
  • 実走はこの PR が最初の確認となる

マージ後

保護設定(ruleset)の必須チェックには ci-gate のみを指定する。

🤖 Generated with Claude Code

PR では起動条件の paths を外し、changes ジョブ(dorny/paths-filter)の判定を
各ジョブの実行条件へ移す。paths でスキップされたワークフローはチェックが報告されず、
必須チェックが pending のまま残ってマージがブロックされるため。
push(main)側は従来どおり起動条件の paths で絞る。

必須チェックの指定先として ci-gate ジョブを追加する。matrix を含む個別ジョブ名を
保護設定へ列挙すると shard 数の変更で存在しない名前を要求することになり、
マージ不能か無防備のどちらかへ静かに倒れるため、集約した 1 本のみを指定できる形にする。

PR 側のフィルタは push の paths と同義に保ち、.md の除外も維持する。
除外を意図どおり評価する predicate-quantifier: some-with-excludes は最新リリース
v4.0.2 へ含まれないため、dorny/paths-filter のみ master のコミットを指す。
リリースへ入り次第タグの SHA へ戻す。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@k163377
k163377 merged commit 1d00174 into main Aug 1, 2026
11 checks passed
@k163377
k163377 deleted the ci/required-check-gate branch August 1, 2026 17:22
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