status-check|CIを通じてレビューとマージを制御する仕組み
status-check|CIを通じてレビューとマージを制御する仕組み
概要
status-check は、GitHub等のソースコード管理ツールにおいて、CI(継続的インテグレーション)やテストの実行結果を元に、PRのマージを許可またはブロックする仕組みです。
コードレビューと自動化された品質保証を連携させるために不可欠な要素です。
status-checkが成功しなければ、Approveされていてもマージできない──これがCI連携の基本構造です。
具体的なチェック内容の例
| チェック名 | 内容例 | 
|---|---|
build | 
ビルド成功/失敗の判定 | 
test | 
ユニットテストの通過確認 | 
lint | 
コーディングスタイルの検証 | 
e2e-tests | 
E2E自動テストの成否 | 
codeql | 
セキュリティスキャンの結果 | 
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: npm ci
      - run: npm run testGitHubでの設定手順(ブランチ保護)
- リポジトリ設定画面へ
 - 「Branches」 > 対象ブランチに保護ルールを追加
 Require status checks to pass before mergingを有効化- チェック名を選択(CI実行済みである必要あり)
 
チェック名は CIが一度実行された後でないと一覧に表示されません。まずはPRを作成・pushしてCIを走らせましょう。
よくある失敗と対応策
| 状況 | 対応策 | 
|---|---|
| CIが落ちていてマージできない | エラー詳細を確認し、再実行 or 修正後に再push | 
| ステータスチェックが表示されない | PRを更新して再実行/CI側の設定漏れを確認 | 
| 謎のチェック名が出現する | 古いワークフローや外部Botが生成したチェック名の可能性あり | 
# PRに変更を加えてCIを再トリガー
git commit --allow-empty -m "trigger CI"
git push会話例:status-checkを巡るやりとり
Reviewer: approveしましたが、testがfailしているようです。修正後にマージでお願いします。
Author: 了解です。原因特定して再pushします。Author: CI通らないのですが、ローカルでは問題ないです。
Reviewer: nodeのバージョンかもしれません。CI環境に合わせて確認してみてください。チーム運用のベストプラクティス
lint,test,buildなど、基本的なチェックはすべてRequiredに設定- ステージング環境へのデプロイまで自動で繋げることで、レビュー以外の運用コストを限りなく削減
 - CIが頻繁に落ちる環境は 「レビューが進まない環境」=「技術的負債」 と見なす
 
「CIが止まっていてレビューできない」は組織のボトルネックになります。status-checkは継続的に整備する対象です。
関連用語
pull-request:status-checkはPRに紐づいて実行されるpush:CIを再トリガーする操作request-changes:status-checkがfailしているときのレビュー状態との関係
実務視点まとめ
status-checkはレビュー文化とCI文化をつなぐ「自動のレビュアー」です。
人間が見逃す問題を未然に防ぎ、マージ判断の明確な基準を提供するために、精度と信頼性の高いCIパイプラインの整備は、コードレビューと同等の優先事項です。