자체 호스팅 실행기를 위한 네트워크 액세스 구성
자체 호스팅 실행기가 제한된 아웃바운드 인터넷 액세스가 있는 방화벽 뒤에서 작동하는 경우, 자동 종속성 제출을 위해 허용 목록에 특정 URL을 추가해야 합니다. 필요한 URL은 리포지토리에서 사용하는 에코시스템에 따라 달라집니다.
모든 에코시스템에 필요한 URL
이러한 URL은 모든 자동 종속성 제출 워크플로에 필요합니다.
-
`https://github.com`- GitHub에 액세스하고 작업을 다운로드하는 데 필요합니다. -
`https://api.github.com`- GitHub API 액세스에 필요합니다. -
`https://*.githubusercontent.com`—작업 소스 코드 및 릴리스(`raw.githubusercontent.com`, `github-releases.githubusercontent.com`, 그리고 `objects.githubusercontent.com` 포함)을 다운로드하는 데 필요합니다.
에코시스템별 URL
사용하는 에코시스템에 따라 추가 URL을 허용 목록에 추가해야 할 수 있습니다.
이동
-
`https://go.dev`—Go 툴체인을 다운로드합니다. -
`https://golang.org`— Go 다운로드를 위한 대체 도메인입니다. -
`https://proxy.golang.org`— 종속성 검색 중에 Go 모듈을 다운로드하기 위한 공식 Go 모듈 프록시입니다.
참고 항목
`actions/go-versions` 리포지토리는 일반 요구 사항에 이미 적용된 `https://raw.githubusercontent.com`을(를) 통해 액세스됩니다.
Java(Maven 및 Gradle)
-
`https://repo.maven.apache.org`- 종속성을 다운로드하기 위한 Maven Central 리포지토리입니다. -
`https://api.adoptium.net`- Adoptium/Temurin JDK 배포판을(`actions/setup-java`에서 기본적으로 사용) 다운로드할 경우
다른 JDK 배포를 사용하는 경우 다음이 필요할 수도 있습니다.
-
`https://aka.ms` 및 `https://download.microsoft.com` — Microsoft Build of OpenJDK 경우(참고: `aka.ms` .NET 다운로드에도 사용됨). -
`https://download.oracle.com`— Oracle JDK의 경우 -
`https://api.azul.com`- Azul Zulu OpenJDK의 경우
.NET(C#, F#, Visual Basic)
-
`https://aka.ms` - .NET 다운로드 위치로 리디렉션되는 Microsoft URL 단축기입니다. -
`https://builds.dotnet.microsoft.com` - .NET SDK 및 런타임 다운로드를 위한 기본 피드입니다. -
`https://ci.dot.net` - .NET 빌드에 대한 보조 피드입니다.
참고 항목
.NET 자동 제출에 사용되는 microsoft/component-detection 도구는 일반 요구 사항(https://github.com 및 https://*.githubusercontent.com)에서 이미 적용되는 GitHub 릴리스에서 다운로드됩니다.
Python
-
`https://python.org` - Python 인터프리터를 다운로드합니다.
참고 항목
`actions/python-versions` 리포지토리 및 릴리스는 일반 요구 사항(`microsoft/component-detection`및 `https://*.githubusercontent.com``https://github.com`)에서 이미 다루는 URL을 통해 액세스됩니다.
자동 종속성 제출을 위해 GitHub-호스팅 대형 러너를 사용합니다.
GitHub Team 또는 GitHub Enterprise Cloud 사용자는 자동 종속성 제출 작업을 실행하기 위해 대형 러너를 사용할 수 있습니다.
-
`dependency-submission` 이름으로 조직 수준에서 대형 실행기를 프로비전닝하세요. 자세한 내용은 [조직에 더 큰 실행기 추가](/actions/using-github-hosted-runners/about-larger-runners/managing-larger-runners#adding-a-larger-runner-to-an-organization)를 참조하세요. - 실행기에 대한 리포지토리 액세스 권한을 부여합니다. 자세한 내용은 리포지토리에서 대형 러너에 액세스 허용을 참조하세요.
- "종속성 그래프"에서 "자동 종속성 제출" 옆의 드롭다운 메뉴를 클릭한 다음 레이블 실행기 사용 설정을 선택하세요.
자동 종속성 제출 문제 해결
자동 종속성 제출은 워크플로 속도를 높이기 위해 캐시 작업을 사용하여 실행 간에 패키지 다운로드를 캐시할 수 있도록 최선의 노력을 기울입니다. 자체 호스팅 실행기의 경우 자체 인프라 내에서 이 캐시를 관리할 수 있습니다. 이렇게 하려면 GH_DEPENDENCY_SUBMISSION_SKIP_CACHE의 환경 변수를 true로 설정하여 기본 제공 캐싱을 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 변수에 정보 저장을(를) 참조하세요.
매니페스트 중복 제거
리포지토리는 종속성 제출에 여러 메서드를 사용할 수 있으며, 이로 인해 동일한 패키지 매니페스트가 여러 번 검색될 수 있으며, 각 검사의 출력이 다를 수 있습니다. 종속성 그래프는 중복 제거 논리를 사용하여 출력을 구문 분석하여 각 매니페스트 파일에 대해 가장 정확한 정보의 우선 순위를 지정합니다.
종속성 그래프는 다음 우선 순위 규칙을 사용하여 각 매니페스트 파일의 인스턴스를 하나만 표시합니다.
-
**사용자 제출**은 일반적으로 아티팩트 빌드 중에 생성되며, 가장 완전한 정보를 포함하고 있기 때문에 가장 높은 우선 순위를 갖습니다.- 서로 다른 감지기의 수동 스냅샷이 여러 개 있는 경우, 관련자 및 사용된 첫 번째 스냅샷을 기준으로 사전순으로 정렬됩니다.
- 동일한 감지기를 사용하는 두 개의 관련자가 있는 경우, 해결된 종속성이 병합됩니다. 관련자 및 감지기에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트을(를) 참조하세요.
-
**자동 제출**은 아티팩트 빌드 중에 생성되지만 사용자가 제출하지는 않기 때문에 두 번째로 높은 우선 순위를 갖습니다. -
**정적 분석 결과**는 다른 데이터를 사용할 수 없는 경우에 사용됩니다.
패키지 에코시스템 특정 정보
Maven 프로젝트
Maven 프로젝트의 경우 자동 의존성 제출은 Maven 종속성 트리 종속성 제출 오픈 소스 포크를 실행합니다. 포크를 통해 GitHub가 업스트림 리포지토리와 동기화 상태를 유지하고 자동 제출에만 적용할 수 있는 일부 변경 내용을 유지할 수 있습니다. 포크의 소스는 advanced-security/maven-dependency-submission-action에서 사용할 수 있습니다.
리포지토리의 종속성이 부정확해 보이는 경우 마지막 종속성 그래프 빌드의 타임스탬프가 pom.xml 파일의 마지막 변경 내용과 일치하는지 확인하세요. 타임스탬프는 리포지토리의 Dependabot alerts 탭의 경고 테이블에 보입니다. pom.xml를 업데이트할 커밋을 푸시하면 종속성 트리 제출 작업의 새 실행이 트리거되고 해당 리포지토리의 종속성 그래프를 강제로 다시 빌드합니다.
Gradle 프로젝트
Gradle 프로젝트의 경우에, 자동 종속성 제출은 gradle/작업에서 오픈 소스 Gradle 작업의 포크를 실행하세요. 포크는 actions/gradle-build-tools-actions에서 사용할 수 있습니다. 자동 제출 작업의 결과는 리포지토리의 작업 탭에서 확인할 수 있습니다. 각 실행에는 "Automatic Dependency Submission(Gradle)"이라는 레이블이 태그되고, 해당 출력에는 작업으로 API에 제출한 JSON 페이로드가 포함됩니다.
.NET 프로젝트
.NET 자동 제출 작업은 open source component-detection 프로젝트를 종속성 검색을 위한 엔진으로 사용합니다. .NET 8.x, 9.x 및 10.x를 지원합니다. .NET 자동 제출은 리포지토리의 dependabot.yml가 nuget을(를) package-ecosystem로 정의할 경우 또는 리포지토리의 루트 디렉터리에 지원되는 매니페스트 파일이 있을 때 실행됩니다. 지원되는 매니페스트 파일에는 .sln, .csproj, packages.config, .vbproj, .vcxproj 및 .fsproj가 있습니다.
Python 프로젝트
Python 기본 그래프 생성 엔진으로 open source component-detection 프로젝트를 사용합니다. Python 대한 자동 구독 작업은 리포지토리의 루트 디렉터리에 requirements.txt 파일이 있는 경우에만 실행됩니다. Python 자동 제출은 현재 프라이빗 패키지를 지원하지 않습니다. 공개적으로 사용할 수 없는 requirements.txt 참조된 패키지로 인해 자동 제출 작업이 실패합니다.
참고 항목
이 작업은 actions/setup-python 사용하여 Python 설치합니다. 리포지토리에 설치할 Python 버전을 지정하는 ".python-version" 파일을 포함해야 합니다.