概要
validate-pr-branch-combination による git-flow のブランチ組み合わせ検証が、どの ruleset でも required status check に指定されていません。そのため検証が失敗しても PR をマージできます。git-flow から逸脱したマージを設定で防げるようにします。
#5336 から分離した Issue です。
詳細
現状
- ruleset は 3 つ存在しますが、いずれにも
required_status_checks ルールがありません
Protect default branch (id: 2802479)
Code Quality Copilot review for default branch (id: 19494024)
v* タグの削除禁止 (id: 2802528、target: tag)
Protect default branch の bypass_actors は null(バイパス許可なし)です。つまり検証が無視できるのはバイパスによるものではなく、required でないことが原因です
validate-pr-branch-combination.yml は pull_request の branches: [main, develop, 'release/*'] で起動します
release/* を保護する ruleset は存在しません
実際に発生した逸脱
PR #5338 は fix/リリースパイプラインを修正する → main です。許可リストは hotfix/* のみで fix/* を含まないため検証は失敗しますが、マージされています。
validate-pr-branch-combination/action.yml の許可リストは以下です。
feature/*:develop
dependabot/*:develop
hotfix/*:develop
hotfix/*:main
hotfix/*:release/*
release/*:develop
release/*:main
影響
#5336 で main を merge commit のみに揃えますが、許可外のブランチから main へ直接マージされると、再び main の履歴が想定と異なる形になります。リリースノートの自動生成は main の履歴に依存するため、#5336 の対策が無効化される可能性があります。
検討事項
- 許可リスト自体の見直し
fix/* を許可リストに追加するのか、hotfix/* に寄せるのか
- 現行の 7 パターンが git-flow の運用実態と一致しているか
- required にする対象 ruleset
- 指定する check 名
- ワークフローのジョブ名は
PR のブランチ組み合わせの検証 です。非 ASCII の check 名が required_status_checks で正しく機能するか確認が必要
- 既存のオープン PR への影響
- required 化した時点で、当該チェックが実行されていない既存 PR はマージできなくなります。dependabot PR を含めた影響範囲と、再実行の手順を確認する
完了条件
ここにこの Issue の完了条件を箇条書きで記載します。
概要
validate-pr-branch-combinationによる git-flow のブランチ組み合わせ検証が、どの ruleset でも required status check に指定されていません。そのため検証が失敗しても PR をマージできます。git-flow から逸脱したマージを設定で防げるようにします。#5336 から分離した Issue です。
詳細
現状
required_status_checksルールがありませんProtect default branch(id: 2802479)Code Quality Copilot review for default branch(id: 19494024)v* タグの削除禁止(id: 2802528、target: tag)Protect default branchのbypass_actorsはnull(バイパス許可なし)です。つまり検証が無視できるのはバイパスによるものではなく、required でないことが原因ですvalidate-pr-branch-combination.ymlはpull_requestのbranches: [main, develop, 'release/*']で起動しますrelease/*を保護する ruleset は存在しません実際に発生した逸脱
PR #5338 は
fix/リリースパイプラインを修正する→mainです。許可リストはhotfix/*のみでfix/*を含まないため検証は失敗しますが、マージされています。validate-pr-branch-combination/action.ymlの許可リストは以下です。影響
#5336 で
mainを merge commit のみに揃えますが、許可外のブランチからmainへ直接マージされると、再びmainの履歴が想定と異なる形になります。リリースノートの自動生成はmainの履歴に依存するため、#5336 の対策が無効化される可能性があります。検討事項
fix/*を許可リストに追加するのか、hotfix/*に寄せるのかdevelop用とmain用(リリースノートを正しく出力するために main ブランチへの squash merge を禁止する #5336 で分割予定)の両方にrequired_status_checksを追加するrelease/*向けの PR にも検証を効かせるには、release/*を対象とする ruleset の新設が必要PR のブランチ組み合わせの検証です。非 ASCII の check 名がrequired_status_checksで正しく機能するか確認が必要完了条件
ここにこの Issue の完了条件を箇条書きで記載します。