종속성 제출 API 정보
REST API를 사용하여 프로젝트에 대한 종속성을 제출할 수 있습니다. 이를 통해 소프트웨어가 컴파일되거나 빌드될 때 확인된 종속성 등의 종속성을 GitHub의 종속성 그래프 기능에 추가하여 프로젝트의 모든 종속성을 보다 완벽하게 파악할 수 있습니다.
종속성 그래프는 리포지토리의 매니페스트 또는 잠금 파일(예: JavaScript 프로젝트의 package-lock.json
파일)에서 식별되는 종속성 외에 API를 사용하여 제출하는 모든 종속성을 보여 줍니다. 종속성 그래프 보기에 대한 자세한 내용은 리포지토리의 종속성 탐색을(를) 참조하세요.
제출된 종속성은 알려진 취약성에 대해 Dependabot alerts 및 Dependabot security updates를 받게 됩니다. GitHub Advisory Database의 지원되는 에코시스템 중 하나에서 발생한 종속성에 대한 Dependabot alerts만 가져옵니다. 이러한 에코시스템에 대한 자세한 내용은 GitHub Advisory Database 정보을(를) 참조하세요. 종속성 제출 API을(를) 통해 제출된 전환 종속성의 경우 업데이트를 사용할 수 있으면 Dependabot에서 자동으로 끌어오기 요청을 열어 상위 종속성을 업데이트합니다.
제출된 종속성은 종속성 검토에 표시되지만, 조직의 종속성 인사이트에서는 사용할 수 없습니다.
참고 항목
종속성 제출 API 및 종속성 검토 API는 함께 작동합니다. 즉, 종속성 검토 API에는 종속성 제출 API을(를) 통해 제출된 종속성이 포함됩니다.
종속성은 스냅샷 형식으로 종속성 제출 API에 제출됩니다. 스냅샷은 커밋 SHA 및 기타 메타데이터와 연결된 종속성 집합으로, 커밋에 대한 리포지토리의 현재 상태를 반영합니다. 빌드 시 감지된 종속성에서 스냅샷을 생성할 수 있습니다. 네트워크를 통해 종속성 제출 API를 사용하는 방법에 대한 기술적인 내용은 종속성 제출에 대한 REST 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@v4
- uses: actions/setup-go@v5
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
이러한 작업에 대한 자세한 내용은 종속성 그래프에서 지원되는 패키지 에코시스템을(를) 참조하세요
사용자 고유의 작업 만들기
또는 빌드 시 프로젝트에 대한 종속성을 제출하는 고유한 작업을 작성할 수 있습니다. 워크플로는 다음을 수행해야 합니다.
- 프로젝트에 대한 종속성 목록을 생성합니다.
- 종속성 목록을 종속성 제출 API에서 허용하는 스냅샷 형식으로 변환합니다. 형식에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트의 "리포지토리 스냅샷 만들기" API 엔드포인트에 대한 본문 매개 변수를 참조하세요.
- 종속성 제출 API에 형식이 지정된 종속성 목록을 제출합니다.
GitHub는 종속성 제출 API에 종속성을 제출하기 위한 고유한 GitHub 작업을 빌드하는 데 도움이 되는 TypeScript 라이브러리인 종속성 제출 도구 키트를 유지 관리합니다. 작업 작성에 대한 자세한 내용은 자동화 공유을(를) 참조하세요.
스냅샷으로 SBOM 제출
SBOM(소프트웨어 제품 구성 정보)을 만들거나 관리하는 외부 도구가 있는 경우, 해당 SBOM을 종속성 제출 API에 제출할 수도 있습니다. 스냅샷 데이터 형식은 표준 SPDX 및 CycloneDX SBOM 형식과 매우 유사하며 스냅샷으로 사용할 형식을 생성하거나 변환할 수 있는 몇 가지 도구가 있습니다.
팁
SPDX 종속성 제출 작업 및 Anchore SBOM 작업을 사용하여 SBOM을 생성하고 종속성 제출 API에 제출할 수 있습니다.
예를 들어 다음 SPDX 종속성 제출 작업 워크플로는 리포지토리에 대한 종속성을 계산하고, SPDX 2.2 형식으로 내보낼 수 있는 SBOM을 생성하고, 종속성 제출 API에 제출합니다.
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@v4
- 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@v4
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/"