テストカバレッジの基準がリポジトリごとに違い、設定画面を人が巡回していないでしょうか。GitHubは2026年9月18日、リポジトリRulesetの「Restrict code coverage」をREST APIから作成・更新・取得できるようにしました。
<style> .cv-hero,.cv-note,.cv-flow{padding:1.2rem;margin:1.5rem 0;border:1px solid #cdd5e1;border-radius:16px;background:#f5f7fb;color:#172033}.cv-hero p:last-child,.cv-note p:last-child{margin-bottom:0}.cv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:12px;margin:1.5rem 0}.cv-card{padding:1.1rem;border:1px solid #cdd5e1;border-radius:14px;background:#fff}.cv-card strong{display:block;color:#3658b0;font-size:1.35rem;margin-bottom:.35rem}.cv-table{overflow-x:auto;margin:1.5rem 0}.cv-table table{border-collapse:collapse;width:100%;min-width:650px}.cv-table th,.cv-table td{padding:.8rem;border:1px solid #cdd5e1;text-align:left;vertical-align:top}.cv-table th{background:#e9edfa}.cv-flow ol{padding-left:1.3rem}.cv-flow li{margin:.7rem 0}.cv-note{background:#fff7e8;border-left:5px solid #b66a16}.cv-code{overflow:auto;padding:1rem;border-radius:14px;background:#101827;color:#e6edf7;font-size:.88rem;line-height:1.55}.cv-meter{display:grid;gap:.8rem;margin:1.5rem 0}.cv-row{display:grid;grid-template-columns:9rem 1fr 4rem;align-items:center;gap:.6rem}.cv-track{height:14px;background:#dce2eb;border-radius:99px;overflow:hidden}.cv-fill{height:100%;background:linear-gradient(90deg,#3658b0,#20a89a)}@media(max-width:560px){.cv-row{grid-template-columns:1fr 4rem}.cv-track{grid-column:1/-1;grid-row:2}} </style>① 最低ラインと許容低下幅をREST APIでコード化できます。
② GitHub Code Qualityとカバレッジのアップロードが前提です。
③ 現状値を測り、評価モードから始め、例外と監査方法を決めてから強制します。
従来はWeb画面で設定していたコードカバレッジRulesetを、一般提供のREST APIで管理できます。設定値をGitでレビューし、テンプレートから多数のリポジトリへ配布し、ドリフトを定期検出できるようになりました。
例えば現在80%のリポジトリで minimum_coverage: 75、max_coverage_drop: 1 とした場合、75%未満になるPRだけでなく、79%を下回るPRもブロック対象になります。前者は絶対基準、後者は現在値からの後退防止です。
| 項目 | 要件 | 確認ポイント |
|---|---|---|
| 提供先 | GitHub Team、GitHub Enterprise Cloud(データレジデンシー含む) | GitHub Enterprise Serverでは利用不可 |
| 解析 | GitHub Code Qualityを有効化 | 組織ポリシーとライセンスを確認 |
| データ | コードカバレッジをアップロード | PRと対象ブランチの両方で継続送信 |
| 作成権限 | Administrationのwrite権限 | Fine-grained tokenまたはGitHub Appを最小権限で使用 |
| API版 | バージョン指定 | 公式例は2026-03-10 |
次はデフォルトブランチを対象に、最低75%、低下幅1ポイントまでを指定する最小構成例です。OWNER と REPO、トークンは環境に合わせて置き換えます。
gh api --method POST \
-H "X-GitHub-Api-Version: 2026-03-10" \
/repos/OWNER/REPO/rulesets \
--input - <<'JSON'
{
"name": "coverage-baseline",
"target": "branch",
"enforcement": "evaluate",
"conditions": {
"ref_name": {
"include": ["~DEFAULT_BRANCH"],
"exclude": []
}
},
"rules": [
{
"type": "code_coverage",
"parameters": {
"minimum_coverage": 75,
"max_coverage_drop": 1
}
}
]
}
JSON
evaluate はGitHub Enterpriseで、マージを止めずにRule Insightsで影響を試すためのモードです。Teamプランなどで利用できない場合は、検証用リポジトリと低いしきい値から始め、active 化する前に影響を確認してください。
カバレッジ率は品質そのものではありません。重要な分岐が未テストでも数字は高くなり、価値の薄いテストを増やして数字だけを満たすこともできます。導入初期は絶対値を急に上げるより、低下幅を小さくして既存水準から後退させない設計が現実的です。
この期間は編集部の導入例で、GitHubの推奨値ではありません。変更頻度や失敗率に合わせて調整します。
設定前にカバレッジのアップロード成功率を確認してください。
計測ジョブの失敗と本当の基準違反を区別できないまま強制すると、正常なPRまで止める運用障害になります。
プラットフォームチームは、カバレッジ基準を「人が画面で設定する規約」から「レビュー・テスト可能な構成データ」へ変えられます。開発者はPR時点で一貫した基準を受け取れます。一方、経営指標にするならカバレッジだけでなく、変更失敗率、障害流出率、テスト時間も併せて見るべきです。
組織レベルでの配布方法、Rule InsightsのAPI連携、モノレポ単位の粒度、GHESへの提供状況を追跡します。まずは宣言JSONと実設定の差分を可視化し、強制前に「どのPRが、なぜ止まるか」を説明できる状態が目標です。
最終確認日:2026年9月20日