Skip to content

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

本リポジトリの品質ゲート(PHPCS / PHPUnit / PHPStan / Deptrac / Format / PSR-4)を PR 上で有効 にし、develop 向き PR が CI 失敗のままマージできないようにするための手順です。Issue #1827 の受け入れ条件に対応します。

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

  • 本リポジトリのコード差分でできること: ワークフロー定義(.github/workflows/*.yml)の維持、および本手順の文書化。
  • リポジトリ管理者(または GitHub 組織の管理者)が行うこと: develop 向け Rulesets または ブランチ保護ルールの有効化。これは API トークンや git では完了せず、GitHub の Settings から行う作業である。
  • 受け入れ(マージ前に CI 失敗で止まること)の実証は、上記の設定に、テスト用 PR で意図的に失敗を出して確認する。

先決条件: PR で CI が走ること

必須ステータスとして指定できるのは、対象 PR に紐づくチェック実行のみです。pull_request: branches: [develop] が定義されたワークフローが、develop 向き PR の Checks に表示されます。

上記を満たしたうえで、以降のリポジトリ設定を行ってください。

推奨: Rulesets または ブランチ保護ルール

GitHub の Settings → Rules → Rulesets(推奨)または Settings → Branches のクラシック保護のいずれかで、develop に次を満たすルールを追加します。

  1. マージ前に pull request 必須(直接 push 禁止、または許可方針に合わせる)
  2. 必須のステータスチェックに、次表の ジョブ名(表示は GitHub 上は「ワークフロー名 / ジョブ名」形式)を指定する
  3. 必須チェックを満たさないマージを禁止(「上記をバイパスできない者」の設定を、方針に合わせて厳格化。一般メンバーが不要なバイパスを持たないこと)
  4. 必要に応じて 管理者も同じルールを強制Include administrators 相当)を有効化し、管理者のバイパスを避ける

本リポジトリの想定する必須チェック(2026-04-25 時点)

ドロップダウンに出てくる表示名は環境で微妙に違うことがあるため、最初の 1 本の PR マージ後、Checks タブの表記と突き合わせて指定してください。

ワークフロー(nameジョブ名(jobs.*.name
PHPCS CheckPHPCS Check (WordPress + 未使用use文)
PHPUnit CheckPHPUnit
PHPStan CheckPHPStan Check
Deptrac Architecture CheckArchitecture Check with Deptrac
Format CheckFormat Check (Prettier)
PSR-4 Compliance CheckPSR-4 Compliance Check

補足: ドキュメント専用の deploy-docs 等は、必須化するかは運用判断で別途。品質ゲートの中心は上表 6 件です。

必須ステータスチェックに指定する表記(目安)

UI のドロップダウンでは、次の 「ワークフロー名 / ジョブ名」 形式で表記されることが多い。実際の文字列は PR の Checks タブの名称と突き合わせる。

必須化する目安(コピー用)
PHPCS Check / PHPCS Check (WordPress + 未使用use文)
PHPUnit Check / PHPUnit
PHPStan Check / PHPStan Check
Deptrac Architecture Check / Architecture Check with Deptrac
Format Check / Format Check (Prettier)
PSR-4 Compliance Check / PSR-4 Compliance Check

バイパスと「管理者」に関する設定

Issue #1827「管理者以外はルールをバイパスできない」 には、例えば次を満たす方針が考えられる(UI 名は products の evolution で変わる可能性あり)。

  • Rulesets: Bypass を最小限(必要なら組織の管理者相当のみ)にし、一般 Write が不要にバイパスできないこと。
  • ルールの対象者: 可能なら Enforcement status(または従来の Include administrators 相当)で、管理者に対しても同じ保護を適用する(運用・緊急時方針はチーム合意のうえで)。

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

  1. ルールの設定後、テスト用ブランチで意図的に PHPCS 等を失敗させ、PR の Merge がブロックされることを確認する
  2. 同じ手順のうえ、管理者アカウントで「不要なバイパス」が可能になっていないか(方針どおりか)を確認する

Issue #1827 受け入れ条件との対応

受け入れ条件本ドキュメント/担当
develop に保護ルール(または Ruleset)が設定されている管理者が、本ページの 「推奨: Rulesets または ブランチ保護ルール」 節に従い develop を対象に設定。
必須ステータス(phpcs, phpunit 等)が指定されている上表 6 ジョブを必須化。「必須ステータスチェックに指定する表記(目安)」 一覧と、PR の Checks タブの表記を突き合わせ。
CI 失敗時に PR マージがブロックされる「動作確認(受け入れの確認用)」 節を実施。
管理者以外がルールをバイパスできない「バイパスと「管理者」に関する設定」 節の方針を満たす。

関連

  • ワークフロー定義: リポジトリ直下 .github/workflows/