Skip to main content

依存関係グラフでパッケージ エコシステムをサポート

依存関係グラフは、さまざまなエコシステムをサポートしています。

依存関係グラフについて

依存関係グラフは、リポジトリに格納されているマニフェストおよびロック ファイル、および 依存関係送信 API を使用してリポジトリに送信された依存関係の概要です。 それぞれのリポジトリについて、以下が表示されます:の依存関係、すなわちリポジトリが依存するエコシステムとパッケージ。

依存関係ごとに、 脆弱性の重大度を確認できます。 検索バーを使用して、特定の依存関係を検索することもできます。 依存関係は、脆弱性の重大度によって自動的に並べ替えられます。

GitHub Enterprise Server を使っても、依存関係のライセンス情報は取得されず、依存関係に関する情報、リポジトリに依存するリポジトリとパッケージは計算されません。 詳しくは、「依存関係グラフについて」を参照してください。

この記事では、サポートされているエコシステムについて説明します。

サポートされているパッケージエコシステム

推奨されるフォーマットでは、直接および間接の依存関係すべてに使用されるバージョンを明示的に定義しています。 これらの形式を使う場合、依存関係グラフはより正確になります。 これは、現在のビルドのセットアップも反映し、依存関係グラフが直接および間接の依存関係の両方で脆弱性を報告できるようにしてくれます。

Package managerLanguagesRecommended formatsAll supported formats
CargoRustCargo.lockCargo.toml, Cargo.lock
ComposerPHPcomposer.lockcomposer.json, composer.lock
NuGet.NET languages (C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsproj.csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config
GitHub Actions workflowsYAML.yml, .yaml.yml, .yaml
Go modulesGogo.modgo.mod
MavenJava, Scalapom.xmlpom.xml
npmJavaScriptpackage-lock.jsonpackage-lock.json, package.json
pipPythonrequirements.txt, pipfile.lockrequirements.txt, pipfile, pipfile.lock, setup.py
pnpmJavaScriptpnpm-lock.yamlpackage.json, pnpm-lock.yaml
pubDartpubspec.lockpubspec.yaml, pubspec.lock
Python PoetryPythonpoetry.lockpoetry.lock, pyproject.toml
RubyGemsRubyGemfile.lockGemfile.lock, Gemfile, *.gemspec
Swift Package ManagerSwiftPackage.resolvedPackage.resolved
YarnJavaScriptyarn.lockpackage.json, yarn.lock

Notes:

  • If you list your Python dependencies within a setup.py file, we may not be able to parse and list every dependency in your project.

  • GitHub Actions workflows must be located in the .github/workflows/ directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax jobs[*].steps[*].uses or jobs.<job_id>.uses will be parsed as dependencies. For more information, see "GitHub Actions のワークフロー構文."

  • Dependabot は、セマンティック バージョン管理を使用する脆弱な GitHub Actions に対してのみ、Dependabot alerts を作成します。 SHA バージョン管理を使用する脆弱なアクションのアラートは受け取れません。 SHA バージョン管理で GitHub Actions を使用する場合は、リポジトリまたは組織に対して Dependabot version updates を有効にして、使用するアクションを最新バージョンに更新しておくことをおすすめします。 For more information, see "Dependabot アラートについて" and "GitHub Dependabot のバージョンアップデートについて."

依存関係の送信アクションによってサポートされるパッケージ エコシステム

依存関係送信 API を使用して、たとえそのエコシステムが上記のサポート対象エコシステム リストに含まれていない場合でも、ビルド時の依存関係を依存関係グラフに追加したり、任意のパッケージ マネージャーまたはエコシステムから選んだ依存関係を依存関係グラフに追加できます。 これらの送信された依存関係からの依存関係情報は、順番に、Dependabot updates と Dependabot alerts に送られます。

依存関係送信 API を使用してプロジェクトに送信された依存関係には、提出に使用された検出機能と、いつ送信されたかが表示されます。 依存関係送信 API の詳細については、「Dependency Submission API を使用する」を参照してください。

プロジェクトのビルド時にプロジェクトの依存関係を送信するには、通常、GitHub Actions ワークフローで 依存関係送信 API を使います。 依存関係送信 API を使う最も簡単な方法は、依存関係のリストを収集して必要なスナップショット形式に変換したものを API に送信するアクションを事前に作成し、それをリポジトリに追加することです。 現在使用可能なアクションへのリンクを次の表に示します。

エコシステムアクション
GoGo の依存関係送信
GradleGradle の依存関係送信
MavenMaven 依存関係ツリーの依存関係送信
製粉Mill の依存関係送信
ScalaSbt の依存関係送信
NuGet とその他コンポーネント検出の依存関係の送信アクション

注: コンポーネント検出依存関係の送信アクションの場合、サポートされているその他のエコシステムには、Vcpkg、Conan、Conda、Crates、NuGet などがあります。

たとえば、次の Go 依存関係送信ワークフローは、Go ビルド ターゲット (main 関数を含む Go ファイル) の依存関係を計算し、そのリストを 依存関係送信 API に送信します。

name: Go Dependency Submission
on:
  push:
    branches:
      - main

# The API requires write permission on the repository to submit dependencies
permissions:
  contents: write

# Environment variables to configure Go and Go modules. Customize as necessary
env:
  GOPROXY: '' # A Go Proxy server to be used
  GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY
jobs:
  go-action-detection:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout Repository'
        uses: actions/checkout@v4

      - uses: actions/setup-go@v5
        with:
          go-version: ">=1.18.0"

      - name: Run snapshot action
        uses: actions/go-dependency-submission@v1
        with:
            # Required: Define the repo path to the go.mod file used by the
            # build target
            go-mod-path: go-example/go.mod
            #
            # Optional. Define the repo path of a build target,
            # a file with a `main()` function.
            # If undefined, this action will collect all dependencies
            # used by all build targets for the module. This may
            # include Go dependencies used by tests and tooling.
            go-build-target: go-example/cmd/octocat.go

独自のアクションの作成もできます。 詳しくは、「Dependency Submission API を使用する」を参照してください。