Skip to main content

Dependency submission APIの利用

Dependency submission APIを使って、プロジェクトのビルドあるいはコンパイル時に解決される依存関係などをプロジェクトにサブミットできます。

Note: The Dependency submission API is currently in public beta and subject to change.

Dependency submission APIについて

The Dependency submission API lets you submit dependencies for a project. This enables you to add dependencies, such as those resolved when software is compiled or built, to GitHub's dependency graph feature, providing a more complete picture of all of your project's dependencies.

The dependency graph shows any dependencies you submit using the API in addition to any dependencies that are identified from manifest or lock files in the repository (for example, a package-lock.json file in a JavaScript project). For more information about viewing the dependency graph, see "Exploring the dependencies of a repository."

Submitted dependencies will receive Dependabotアラート and Dependabotセキュリティアップデート for any known vulnerabilities. 依存関係に対するDependabotアラートが得られるのは、GitHub Advisory Databaseのサポートされているエコシステムのいずれかからのものである場合だけです。 Submitted dependencies will not be surfaced in dependency review or your organization's dependency insights.

依存関係は、スナップショットの形でDependency submission APIにサブミットされます。 スナップショットは、コミットSHAに関連づけられた依存関係のセット及び他のメタデータで、コミットに対するリポジトリの現在の状態を反映します。 Dependency submission APIに関する詳しい情報についてはDependency submission REST APIのドキュメンテーションを参照してください。

ビルド時の依存関係のサブミット

Dependency submission APIをGitHub Actionsワークフロー中で使用し、プロジェクトのビルド時にプロジェクトに依存関係をサブミットできます。

事前作成されたアクションの利用

Dependency submission APIを使用するもっともシンプルな方法は、依存関係のリストを収集し、必要なスナップショットの形式に変換し、APIにサブミットするような、事前に作成されたアクションをリポジトリに追加することです。 これらのステップを完了させるアクションは、様々なエコシステムについてGitHub Marketplaceから利用可能で、ベータ以降の過程でさらに多くのアクションが作成されるでしょう。 現在利用可能なアクションへのリンクは、下の表にあります。

エコシステムアクション
GoGo Dependency Submission

たとえば、以下のGo Dependency Submissionワークフローは、Goのビルドターゲット(main関数を持つGoのファイル)に対する依存関係を計算し、リストをDependency Submission APIにサブミットします。


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

# 依存関係をサブミットするために、APIにはリポジトリへの書き込み権限が必要
permissions:
  contents: write

# GoとGoのモジュールを設定するための環境変数。 Customize as necessary
env:
  GOPROXY: '' # 使用するGoのプロキシサーバー
  GOPRIVATE: '' # プライベートと見なされGOPROXYからリクエストされないモジュールのリスト
jobs:
  go-action-detection:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout Repository'
        uses: actions/checkout@v3

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

      - name: Run snapshot action
        uses: @actions/go-dependency-submission@v1
        with:
            # 必須: build target が使用するgo.mod fileへの
            # リポジトリパスの定義
            go-mod-path: go-example/go.mod
            #
            # オプション。 ビルドターゲットのリポジトリパスの定義。
            # `main()`関数を持つファイル。
            # 未定義の場合、このアクションはモジュールのすべての
            # ビルドターゲットが使うすべての依存関係を収集する。 これには
            # テストやツールが使うGoの依存関係が含まれることがある。
            go-build-target: go-example/cmd/octocat.go

独自のアクションの作成

あるいは、ビルド時にプロジェクトに依存関係をサブミットする独自のアクションを書くこともできます。 そのワークフローは以下のことをしなければなりません。

  1. プロジェクトの依存関係のリストの生成。
  2. 依存関係のリストを、Dependency submission APIが受け付けるスナップショットの形式に変換。 この形式に関する詳しい情報については、Dependency submission REST APIドキュメンテーション中の"Create a repository snapshot" API操作のbodyパラメータを参照してください。
  3. 形式の整った依存関係のリストを、Dependency submission APIにサブミットする。

GitHub Enterprise CloudはDependency Submission Toolkitをメンテナンスしています。これは、依存関係をDependency submission APIにサブミットするためのGitHub Actionの構築を支援するためのTypeScriptライブラリです。 アクションの作成に関する詳しい情報については「Actionsの作成」を参照してください。