GitHub:依存関係のレビューのチェックが失敗する
依存関係のレビューのアクション(dependency review action)は、プルリクの依存関係の変更を調べ、新しい依存関係に既知の脆弱性があるとエラーにします。既定では脆弱なパッケージを1つでも見つけるとチェックが失敗し、リポジトリの持ち主がこのチェックの成功を必須にしていれば、プルリクはマージできません(GitHub の説明「依存関係のレビュー」・2026年10月27日に確認)。
- name: Dependency Review
uses: actions/dependency-review-action@v4
with:
fail-on-severity: moderate
deny-licenses: LGPL-2.0, BSD-2-Clause
fail-on-scopes: development
チェックが失敗する理由
- 脆弱な依存関係:プルリクが足す・上げる依存関係に既知の脆弱性があります。ロックファイルの間接の依存関係も含みます。アクションは、ベースのコミットとヘッドのコミットの間の依存関係の変更を、依存関係のレビューの REST API から取ります。
- 重大度と範囲:
fail-on-severity(critical・high・moderate・low)が失敗にする脆弱性の重大度を、fail-on-scopes(development・runtime・unknown)がプルリクを止める範囲を決めます(GitHub の説明「依存関係のレビューのアクションを設定する」)。 - ライセンス:
allow-licenses(これだけ許す)かdeny-licenses(これを止める)のどちらか一方で、許されないライセンスの依存関係にチェックが失敗します。ルールセットで強制するライセンスの方針は別のルールです:ライセンスの適合の結果を参照。 - データの不足:アクションは依存関係の送信(dependency submission)の API で送られた依存関係も見ます。送信は依存関係のレビューと同じワークフローで走らせます。別に走らせるなら
retry-on-snapshot-warningsをtrueに、retry-on-snapshot-warnings-timeoutを一番長い送信より少し長い秒数にします。
誰が必須にしているか
- ブランチ:依存関係のレビューのチェックは、保護されたブランチがマージの前に成功を必須にできるステータスチェックの1つです(GitHub の説明「保護されたブランチについて」)。
- 組織:組織のオーナーは、リポジトリのルールセットの「Require workflows to pass before merging」に依存関係のレビューを走らせるワークフローを入れて強制できます。プルリクはそれが成功してからマージできます(GitHub の説明「組織全体で依存関係のレビューを強制する」)。
- 使える所:依存関係のレビューは、依存関係グラフを有効にすると使えます。アクションはすべての公開リポジトリと、GitHub Code Security か GitHub Advanced Security を有効にした非公開リポジトリで使えます。
何が変わったかを見る
- リッチ差分:Files changed のタブで、File filter で依存関係を記録しないファイルを畳み、マニフェストかロックファイルの見出しの右のファイルのアイコンで依存関係のレビューを出します(GitHub の説明「プルリクの依存関係の変更をレビューする」)。
- 警告:脆弱性のある依存関係が重大度の順に先頭に並びます。警告には、短い説明、CVE か GHSA の ID、重大度、脆弱性が直った依存関係の版が出ます。
- 出ないもの:コミットされた静的な JavaScript のファイル(
jquery.jsなど)にはリッチ差分が無く、GitHub が読み取れない依存関係も出ないので、ソースの差分も見ます。 - REST API:
GET /repos/OWNER/REPO/dependency-graph/compare/BASE...HEADは、足された・外された依存関係を、マニフェスト・版・ライセンス・範囲・脆弱性とともに返します。GitHub Advanced Security の無い非公開リポジトリや、フォークに対しては 403 を返します。
直す所
- 依存関係を上げる:警告が直った版として挙げる版か、それより新しい版にして push します。
- 1つの勧告を外す:
allow-ghsasに、検出で飛ばす GitHub Advisory Database の ID を並べます。ワークフローか、その設定ファイルに書きます。 - しきい値を変える:GitHub は、セキュリティと開発者の手間の釣り合いのために
fail-on-severityで失敗させることと、許すライセンスを並べるより止めるライセンスを並べることを勧めています(GitHub の説明「依存関係のレビューのアクションの設定を変える」)。 - 報告されないチェック:Actions のタブが用意するワークフローは、
mainへのプルリクで走ります(branches: [ "main" ])。走らない必須のチェックは「Expected」のまま待ちます:必須のチェックが Expected のままを参照。
IntelliJ IDEA で GitHub のプルリクを見るなら
Lesstep の Pull Request Inbox for GitHub は、JetBrains IDE(2024.1 以降)のプラグインです。プルリクのレビュー・チェック・会話を差分の隣に出し、対象のブランチが許す方法でマージします。ヘッドのコミットのチェックを1つずつ、名前・結果の見出し・GitHub へのリンクつきで並べ、ブランチのルールがマージを止めているときはマージの確認がそう言います。マニフェストやロックファイルはソースの差分で出し、GitHub の依存関係のレビューとしては出しません。受信箱・差分・会話は無料、承認・コメント・解決・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
GitHub は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:GitHub のマージの断り(405・409) · GitHub のレビューの断り(422) · GitHub の検索の 422「Validation Failed」 · 「Resource not accessible by personal access token」 · 401「Bad credentials」 · 「Resource protected by organization SAML enforcement」 · 「API rate limit exceeded」 · GitHub の差分の 406「too_large」・3,000件 · GitHub の行のコメントの 422「must be part of the diff」 · GitHub のブランチの更新の断り(422) · GitHub のプルリクが作れない(422・403) · GitHub の自動マージの断り · GitHub の下書き・レビュー準備完了・閉じるの断り · GitHub の会話の解決の断り · GitHub のチェックが出ない(check runs の 403) · GitHub のファイルの中身が読めない · GitHub の比較の断り(404・422) · GitHub のコメント・返信の断り(ロック・アーカイブの 403) · GitHub のマージの方法の断り(405) · GitHub のブランチが見つからない(404・301) · GitHub Enterprise Server につながらない · GitHub のレビューの依頼が出ない · GitHub のプルリクの一覧が足りない · GitHub の 404・名前を変えたリポジトリ(301・307) · GitHub の行のコメントが outdated・差分に無い · GitHub のプルリクの更新・通知が遅い · GitHub の変更の提案が適用できない · GitHub の必須チェックが Expected のまま · GitHub でコードオーナーのレビューが要る · GitHub で未解決の会話がマージを止める · GitHub で署名の無いコミットがマージを止める · GitHub のマージキューでマージするブランチ · GitHub でマージが最後の push の承認を待っている · GitHub でマージがコードスキャンの結果を待っている · GitHub でマージがコード品質の結果を待っている · GitHub でコードのカバレッジの水準がマージを止める · GitHub でライセンスの適合の結果がマージを止める · GitHub でブランチのロックや更新の制限がマージを止める · GitHub でマージの後にブランチが消えない · GitHub でチームの承認(Required reviewers)がマージを止める · GitHub でシークレットスキャンのアラートがマージを止める · GitHub でスタックしたプルリクがマージできない · GitHub で push の規則が push を止める · GitHub でコミットのメタデータの規則がマージを止める · GitHub で強制 push が止められる · GitHub でプルリクをマージしても issue が閉じない · GitHub のプルリクを手元にチェックアウトできない · GitHub のプルリクがマージ先と衝突している · GitHub で変更を依頼された・レビューを取り消す · GitHub で共同作者がコミットに数えられない · GitHub で Dependabot がプルリクをリベースしない · GitHub でフォークが同期できない · GitHub でプルリクのベースのブランチを変えられない · GitHub でプルリクを取り消せない · GitHub でプルリクのテンプレートが出ない · GitHub でプルリクにラベルや担当者が付かない · GitHub でプルリクを閉じられない・開き直せない · GitHub でプッシュ保護にプッシュを止められた · GitHub でプルリクのコメントが隠された · GitHub でデプロイが成功するまでプルリクをマージできない · GitHub でチームに頼んだレビューがメンバーに置き換わった · GitHub でプルリクのファイルの Viewed が外れた · GitHub でマージしていないプルリクがマージ済みになった · GitHub で Copilot のレビューが承認に数えられない · GitHub でワークフローが作ったプルリクのチェックが動かない · GitHub でプルリクに Update branch のボタンが出ない · GitHub で Dependabot のプルリクのチェックが失敗する · GitHub でフォークからのプルリクのチェックが失敗する · GitHub でコミットメッセージの [skip ci] でチェックが動かない · GitHub で保存期間を過ぎてチェックが消えた · GitHub の公開リポジトリのコードレビューの制限 · GitHub でリポジトリのプルリクがオフ・制限されている · GitHub でスタックのプルリクごとにチェックが走る · GitHub でスカッシュでマージ済みのコミットが次のプルリクに出る · GitHub のプルリクでファイルの差分が出ない · GitHub でフォークのプルリクのブランチに push できない · GitHub のプルリクのチェックが取り消された · GitHub で Rebase and merge が使えない · GitHub のマージのコミットメッセージが思った形にならない · GitHub のプルリクでファイルの全行が変わったと出る · GitHub の API がタイムアウトした · GitHub のプルリクで画像や文書の差分が見た目で出ない · GitHub のレビューの依頼が断られる(422) · GitHub で Copilot が作ったプルリクのチェックが動かない・承認が数えられない · GitHub の push が GH006・GH013 で断られる · GitHub で承認が足りずマージできない・数に入らない承認 · JetBrains の IDE で GitHub のプルリクを扱う · English