Skip to content

develop ブランチの保護(必須 CI ・マージブロック)

本リポジトリの品質ゲート(PHPCS / PHPUnit / PHPStan / Deptrac / Format / PSR-4)を PR 上で有効 にし、develop 向き PR が CI 失敗のままマージできないようにする手順です。

  • Issue #1827 … ブランチ保護・必須チェック
  • Issue #2002 … Actions 課金最適化

採用している運用(Plan B)

個人の無料アカウント + プライベートリポジトリ では Merge Queue が使えない ため、次の運用です(GitHub ドキュメント 参照)。

タイミング品質 CI(CI Quality Gate)
PR 作成opened1 回走る
PR 再オープンreopened1 回走る
ドラフト → Ready for review1 回走る
feature ブランチへの 追加 pushsynchronize走らない
develop への merge 後 push走らない
Re-run all jobs(手動)元 run と同じ SHAを再実行(追加 push 後の最新 head には非対応)
workflow_dispatch(手動)PR head または選択ブランチ先端を検証可能

マージ前の必須手順: コミットを push したあとは、Actions → CI Quality Gate → Run workflow を実行する(pr_number に PR 番号を入力するか、PR ブランチを選択)。develop を選んで pr_number を入力した場合も、必須チェックは PR head の SHA に付与される。最新コミットで Quality Gate がグリーンであることを確認してからマージする。

開発中はローカルで品質チェックを行う:

  • ./bin/run_local_quality_check.sh または composer quality-check
  • composer test
  • npm run format:check

スコープ(コード PR と GitHub 設定の分担)

先決条件(管理者チェックリスト)

#確認項目手順
1Actions 課金Settings → Billing → Actions。上限 0 でブロックされている場合は月次リセット待ち、または無料枠内で実行できるよう見直す。
2ワークフロー定義ci-quality-gate.ymldevelop にマージ済みであること。
3必須チェックRuleset で CI Quality Gate / Quality Gate を指定(下記)。旧 6 件の個別チェックは削除。

推奨: Rulesets(develop 向け)

Settings → Rules → Rulesetsdevelop に次を設定します。

  1. マージ前に pull request 必須
  2. 必須のステータスチェック1 件 指定(下表)
  3. 必須チェックを満たさないマージを禁止
  4. (推奨)Require branches to be up to date before merging … 最新コミットに対するチェックを促す。push 後は Run workflow が必要。
  5. 必要に応じて 管理者も同じルールを強制

Merge Queue は設定しない(個人無料プライベートでは利用不可)。

必須チェック(2026-05 時点)

ワークフロー(nameジョブ名(jobs.*.name
CI Quality GateQuality Gate

UI での表記目安

CI Quality Gate / Quality Gate

PR の Checks タブの表記と突き合わせて指定してください。

旧必須チェック(6 件)からの移行

ci-quality-gate.yml 統合後は 上記 1 件のみ に差し替え、旧 6 件(PHPCS Check / ... 等)は必須リストから 削除 してください。

動作確認(受け入れの確認用)

  1. PR 作成時に CI が 1 回走る
    • develop 向きテスト PR を作成する。
    • CI Quality Gate1 回 実行されることを確認する。
  2. 追加 push では CI が走らない
    • 同 PR にコミットを push する。
    • 新しい CI Quality Gate 実行が 自動では起動しない ことを確認する。
  3. Run workflow で最新コミットを検証できる
    • Actions → CI Quality Gate → Run workflow を実行する(pr_number または PR ブランチ)。
    • 最新コミットで Quality Gate が実行されることを確認する。
  4. 失敗時にマージがブロックされる
    • 意図的に lint 失敗を入れ、Run workflow 後 failed になること。
    • Merge がブロックされることを確認する。

参考: Merge Queue(将来・Organization 移行時)

Organization + GitHub Team 等に移行し Merge Queue が使える場合は、merge_group トリガーへ切り替え可能(分数はさらに削減できる)。現状の個人無料プライベートでは Plan B を正 とする。

Issue 受け入れ条件との対応

Issue受け入れ条件対応
#1827保護ルール・必須チェックRuleset + CI Quality Gate / Quality Gate
#1827CI 失敗でマージブロック動作確認
#2002PR で品質チェックが実行されるPR 作成時 + マージ前 Run workflow
#2002マージゲートが機能する必須チェック + Run workflow 運用

関連