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アラートとDependabotセキュリティアップデートを受け取ります。 依存関係に対するDependabotアラートが得られるのは、GitHub Advisory Databaseのサポートされているエコシステムのいずれかからのものである場合だけです。 サブミットされた依存関係は、依存関係レビューやOrganizationの依存関係インサイトには表示されません。

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