종속성 제출 API는 종속성 그래프에 데이터를 제출하는 수단입니다 이를 통해 정적 분석에 의해 캡처되지 않은 종속성을 제출할 수 있습니다. 자세한 내용은 종속성 그래프에서 종속성을 인식하는 방법을(를) 참조하세요.
빌드 시 종속성 제출
GitHub Actions 워크플로에서 종속성 제출 API을 사용하여 프로젝트를 빌드할 때 해당 프로젝트의 종속성을 제출할 수 있습니다.
미리 만들어진 작업 사용
종속성 제출 API을(를) 사용하는 가장 간단한 방법은 종속성 목록을 수집하고 필요한 스냅샷 형식으로 변환한 후 목록을 API에 제출하는 미리 만들어진 작업을 리포지토리에 추가하는 것입니다.
| 에코시스템 | 작업 |
|---|---|
| Go | Go 종속성 제출 |
| Gradle | 그레이들 종속성 제출 |
| Maven | Maven 종속성 트리 종속성 제출 |
| 제분기 | Mill 종속성 제출 |
| Mix(Elixir) | Mix 종속성 제출 |
| Scala | Sbt 종속성 제출 |
| 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@v5
- uses: actions/setup-go@v5
with:
go-version: ">=1.18.0"
- name: Run snapshot action
uses: actions/go-dependency-submission@v2
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
이러한 작업에 대한 자세한 내용은 종속성 그래프에서 지원되는 패키지 에코시스템을(를) 참조하세요
사용자 고유의 작업 만들기
또는 빌드 시 프로젝트에 대한 종속성을 제출하는 고유한 작업을 작성할 수 있습니다. 워크플로는 다음을 수행해야 합니다.
- 프로젝트에 대한 종속성 목록을 생성합니다.
- 종속성 제출 API에서 허용하는 스냅샷 형식으로 종속성 목록을 변환합니다. 형식에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트의 "리포지토리 스냅샷 만들기" API 엔드포인트에 대한 본문 매개 변수를 참조하세요.
- 종속성 제출 API를 사용하여 형식이 지정된 종속성 목록을 제출합니다.
GitHub은 종속성 제출 API에 종속성을 제출할 수 있는 자신만의 GitHub Action을 구축하는 데 도움이 되는 TypeScript 라이브러리인 Dependency Submission Toolkit을 유지 관리합니다. 작업 작성에 대한 자세한 내용은 자동화 다시 사용을(를) 참조하세요.
스냅샷으로 SBOM 제출
외부 도구를 통해 소프트웨어 제품 구성 정보(SBOM)를 생성하거나 관리하는 경우, 해당 SBOM을 종속성 제출 API에 제출하는 것도 가능합니다. 스냅샷 데이터 형식은 표준 SPDX 및 CycloneDX SBOM 형식과 상당히 유사하며, 스냅샷에 적합한 형식을 만들거나 변환하는 데 사용할 수 있는 몇 가지 도구가 있습니다.
팁
SPDX 종속성 제출 작업 및 Anchore 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/"