CIが止まったら、推測で説明する前に status を見る

  • #CI
  • #障害対応
  • #運用
CIが止まったら、推測で説明する前に status を見る

今回やったこと / この記事について

CIの状態を段階的に確認するイメージ

2026年10月8日、GitHub Actions が始まらない事象に対し、最初は「反映待ちかもしれない」「Settings や Billing を確認する」といった推測を返した。実際の原因は GitHub Actions の大規模障害だった。この経験から、CIの停止時には手元の設定を疑う前に、外部サービスの status を確認する手順を整理する。

「たぶん設定の問題」を先に言わない

CIが動かないとき、リポジトリの設定変更や利用枠の問題を思い浮かべるのは自然だ。しかし、原因を確かめずに利用者へ設定画面の確認を求めても、外部サービス全体の障害なら解決にはつながらない。今回も、最初の返答は「反映待ち」や「Settings / Billing」を候補に挙げ、確認作業を作者へ戻していた。そこで「障害かどうかは調べればわかる」という指摘を受け、外部状態を確認した結果、GitHub Actions の major outage が原因だと分かった。

この順序の問題は、単に最初の仮説が外れたことではない。確認可能な情報を調べる前に、利用者へ作業を依頼した点にある。利用者が設定を調べても、外部障害という前提は変わらない。まず公開された障害情報を確認し、その後で個別のワークフローや権限を調べるほうが、無関係な作業を増やさずに済む。

status と実行記録を分けて見る

切り分けには、githubstatus.com の API と、GitHub API の runs、workflows、mergeable などの情報を使える。確認したいのは、サービス全体が障害を報告しているか、対象ワークフローが実際に起動したか、対象の実行がどの状態か、PRがマージ可能な状態か、といった異なる層の事実である。状況を一つの「CIが動かない」にまとめると、サービス側の停止とリポジトリ側の条件を混同しやすい。

確認する情報答えられる問い
サービスの statusCI基盤全体で障害が告知されているか
runs対象のワークフロー実行が作られたか、状態は何か
workflowsワークフロー定義が見えているか
mergeablePRのマージ可能性に別の問題がないか

APIの応答を見たら、確認時刻と対象を添えて報告する。障害告知がないことは、障害が絶対にない証拠にはならない。その場合は「status上は障害告知が見つからなかった」と範囲を限定し、実行履歴や設定の確認へ進む。逆に障害告知があれば、まずその事実を共有し、復旧を待つのか、別の実行経路を使うのかを状況に応じて判断する。

確認できることだけを依頼する

外部要因が疑われるときは、status を一度引き、結果を添えて報告する。作者に依頼するのは、エージェントから見えない認証画面や組織設定など、自分では確かめられない事実に絞る。推測と確認結果は同じ文の中で混ぜず、確認済みの事実、まだ分からない点、次に調べる項目を分けて書く。

障害対応では、速く答えることと、早く原因を決めつけることは違う。最初にstatusと実行記録を機械的に確認すれば、環境の問題を利用者の設定作業へ誤って押し戻す危険を減らせる。調べた後でも不明なら、不明な範囲をそのまま伝えればよい。推測は調査の入り口に置き、結論の代わりにしない。

更新履歴

  • 2026-11-07: 初稿。