依存関係送信 API は、依存関係グラフにデータを送信するための方法です。 これにより、静的分析によってキャプチャされない依存関係を送信できます。 詳しくは、「依存関係グラフが依存関係を認識する方法」をご覧ください。
ビルド時に依存関係を送信する
GitHub Actions ワークフローで 依存関係送信 API を使って、プロジェクトのビルド時にプロジェクトの依存関係を送信できます。
事前に作成されたアクションを使用する
依存関係送信 API を使う最も簡単な方法は、依存関係のリストを収集して必要なスナップショット形式に変換したものを API に送信するアクションを事前に作成し、それをリポジトリに追加することです。
データリユーザブル依存関係送信プレメイドアクションテーブル %}
これらのアクションについての詳細は、「依存関係グラフがサポートされるパッケージ エコシステム」を参照してください。
独自のアクションを作成する
代わりに、ビルド時にプロジェクトの依存関係を送信する独自のアクションを記述することもできます。 次のようなワークフローにする必要があります。
- プロジェクトの依存関係のリストを生成します。
- 依存関係のリストを 依存関係送信 API で受け入れられるスナップショット形式に変換します。 形式について詳しくは、「依存関係送信用の REST API エンドポイント」の "リポジトリ スナップショットの作成" API エンドポイントの本文パラメーターを参照してください。
- 適切な形式にした依存関係のリストを 依存関係送信 API に送信します。
GitHub は、Dependency Submission Toolkit という TypeScriptライブラリを管理しています。これは、依存関係送信 API に依存関係を送信するための独自のGitHubアクションを構築するのに役立ちます。 アクションの記述について詳しくは、「自動化の再利用」を参照してください。
SBOM をスナップショットとして送信する
ソフトウェア部品表 (SBOM) を作成または管理する外部ツールがある場合は、この SBOM を 依存関係送信 API に送信することもできます。 スナップショット データ形式は標準の SPDX や CycloneDX の SBOM 形式とよく類似しており、スナップショットとして使用可能な形式を生成または変換できるツールがいくつかあります。
ヒント
SPDX 依存関係送信アクションとアンカー SBOM アクションを使うと、SBOM を生成して 依存関係送信 API に送信できます。
たとえば、次の SPDX 依存関係送信アクション ワークフローは、リポジトリの依存関係を計算し、SPDX 2.2 形式でエクスポート可能な SBOM を生成して、依存関係送信 API に送信します。
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# ドキュメントを参照してください。
name: SBOM upload
on:
workflow_dispatch:
push:
branches: ["main"]
jobs:
SBOM-upload:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v5
- name: Generate SBOM
# generation command documentation: https://github.com/microsoft/sbom-tool#sbom-generation
run: |
curl -Lo $RUNNER_TEMP/sbom-tool https://github.com/microsoft/sbom-tool/releases/latest/download/sbom-tool-linux-x64
chmod +x $RUNNER_TEMP/sbom-tool
$RUNNER_TEMP/sbom-tool generate -b . -bc . -pn $ -pv 1.0.0 -ps OwnerName -nsb https://sbom.mycompany.com -V Verbose
- uses: actions/upload-artifact@v3
with:
name: sbom
path: _manifest/spdx_2.2
- name: SBOM upload
uses: advanced-security/spdx-dependency-submission-action@5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e
with:
filePath: "_manifest/spdx_2.2/"