必須の status check とは?
必須の status check とは、pull request が merge できる前に合格しなければならない CI の check であり、自動テストを rigid な merge ゲートに変えるものです。
status check とは、CI が commit や pull request に対して報告する合格または失敗の結果です。check を必須にすると、情報提供から必須へと格上げされます。check がグリーンになるまで merge ボタンは無効のままです。品質を強制する最もシンプルで最も強力な方法です。
status check と必須の check
すべての CI workflow は、実行対象の commit に対して成功か失敗かの status を報告します。デフォルトではこれらは参考情報です。保護されたブランチで特定の check を必須としてマークすると、それが merge の前提条件になり、必須の check が失敗すると merge は完全にブロックされます。
check の表示のされ方
workflow は、pull request 上に表示され merge をゲートする、名前付きの check を報告します。
name: tests
on: [pull_request]
jobs:
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm testなぜ必須の check が重要か
必須の check は、プレッシャー下でレッドな build を merge したくなる誘惑を取り除きます。グリーンな pipeline を交渉の余地のないゲートにするため、main ブランチはリリース可能なまま保たれます。ブランチが最新であることも必須にすれば、check が実際に merge されるコードそのものに対して実行されたことを保証できます。
CI/CD における必須の check
必須の status check は、CI pipeline がデリバリー品質の強制ポイントになる仕組みです。保護されたブランチ上に置かれ、何が merge されるかを決めます。必須にすべき正しい check、つまり高速で信頼できるものを選ぶことで、ゲートをボトルネックにせず効果的に保てます。
必須の check の選び方
- テストや lint のように、本当に品質をゲートする check を必須にする。
- merge を遅らせないよう、必須の check を高速に保つ。
- check が merge 状態で実行されるよう、最新のブランチを必須にする。
- 不安定な check を必須にしない。まず修正するか隔離する。
重要なポイント
- 必須の status check は、pull request が merge できる前に合格しなければなりません。
- 参考程度の CI 結果を rigid な merge ゲートに変えます。
- 必須の check は main ブランチをリリース可能で信頼できる状態に保ちます。