Skip to main content

Dependency Submission API を使用する

この記事では、次の項目が扱われます。

Dependency Submission API を使うと、プロジェクトがビルドまたはコンパイルされるときに解決される依存関係など、プロジェクトの依存関係を送信できます。

注: Dependency Submission API は、現在パブリック ベータ版であり、変更される可能性があります。

Dependency Submission API について

Dependency Submission API を使うと、プロジェクトの依存関係を送信できます。 これにより、ソフトウェアのコンパイル時やビルド時に解決されるものなどの依存関係を GitHub の依存関係グラフ機能に追加し、プロジェクトのすべての依存関係をより完全に把握できます。

依存関係グラフには、リポジトリ内のマニフェストまたはロック ファイル (JavaScript プロジェクトの package-lock.json ファイルなど) から識別された依存関係に加えて、この API を使って送信したすべての依存関係が表示されます。 依存関係グラフの表示について詳しくは、「リポジトリの依存関係を調べる」をご覧ください。

送信された依存関係は、既知の脆弱性に対する Dependabot alerts と Dependabot security updates を受け取ります。 GitHub Advisory Database のサポートされているエコシステムのいずれかからの依存関係に対する Dependabot alerts のみを受け取ります。 送信された依存関係は、依存関係のレビューや Organization の依存関係の分析情報には表示されません。

依存関係は、スナップショットの形式で Dependency Submission API に送信されます。 スナップショットは、コミット SHA や他のメタデータに関連付けられている依存関係のセットであり、コミットのリポジトリの現在の状態を反映しています。 Dependency Submission API について詳しくは、Dependency Submission REST API のドキュメントをご覧ください。

ビルド時に依存関係を送信する

GitHub Actions ワークフローで Dependency Submission API を使って、プロジェクトのビルド時にプロジェクトの依存関係を送信できます。

事前に作成されたアクションを使用する

Dependency Submission API を使う最も簡単な方法は、依存関係のリストを収集して必要なスナップショット形式に変換したものを API に送信するアクションを事前に作成し、それをリポジトリに追加することです。 さまざまなエコシステムについてこれらの手順を行うアクションを GitHub Marketplace で利用でき、ベータ以降の間にさらに多くのアクションが作成されます。 現在使用可能なアクションへのリンクを次の表に示します。

エコシステムアクション
GoGo の依存関係送信

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


name: Go Dependency Submission
on:
  push:
    branches:
      - main
      
# The API requires write permission on the repository to submit dependencies
permissions:
  contents: write

# Envionment 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@v3
        
      - uses: actions/setup-go@v3
        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

独自のアクションを作成する

代わりに、ビルド時にプロジェクトの依存関係を送信する独自のアクションを記述することもできます。 次のようなワークフローにする必要があります。

  1. プロジェクトの依存関係のリストを生成します。
  2. 依存関係のリストを、Dependency Submission API で受け入れられるスナップショット形式に変換します。 形式について詳しくは、Dependency Submission REST API のドキュメントで "リポジトリ スナップショットの作成" API 操作の本文パラメーターをご覧ください。
  3. 適切な形式にした依存関係のリストを Dependency Submission API に送信します。

GitHub Enterprise Cloud の Dependency Submission Toolkit は、Dependency Submission API に依存関係を送信するための独自の GitHub アクションを構築するのに役立つ TypeScript ライブラリです。 アクションの記述について詳しくは、「アクションの作成」をご覧ください。