GitHub 통합 지점

GitHub Actions 워크플로에 vcpkg로 빌드된 바이너리 파일을 캐시하기

vcpkg의 이진 캐싱 기능은 연속 통합을 위해 GitHub Actions를 사용하는 프로젝트를 빌드하는 데 걸리는 시간을 줄입니다. 자세한 내용은 이진 캐싱 기능 설명서를 참조하세요.

GitHub 패키지 NuGet 캐시 공급자

GitHub 패키지를 사용하면 리포지토리에서 공용 또는 프라이빗 사용을 위해 이진 아티팩트를 게시할 수 있습니다. 게시된 패키지에 대한 스토리지 호스팅 외에도 GitHub 패키지 지원은 vcpkg가 이진 소스 공급자와 함께 이진 캐시로 사용할 수 있는 NuGet 레지스트리 인터페이스를nuget 제공합니다.

GitHub 종속성 그래프

비고

이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.

팁 (조언)

이 기능을 적극적으로 개발하고 있으며 피드백을 듣고 싶습니다. 전자 메일을 보내거나 vcpkg@microsoft.com에서 문제를 제출하여 현재 기능 또는 원하는 기능에 대한 생각이 있는지 알려주세요. GitHub에서 이를 가능하게 하는 기능에 대한 피드백이 있으면 저희에게도 알려주세요. 그러면 GitHub의 담당자들에게 전달될 수 있도록 하겠습니다.

GitHub 종속성 그래프 정보

GitHub 종속성 그래프는 리포지토리에 대한 종속성 집합을 저장합니다. GitHub는 리포지토리의 종속성을 시각화할 수 있는 것 외에도 종속성 검토 및 Dependabot 경고를 포함하여 이 데이터 위에 몇 가지 유용한 기능을 빌드합니다. 공급망 보안에 대한 GitHub 설명서에서 자세히 알아보세요.

GitHub 종속성 그래프와 vcpkg 통합

vcpkg는 GitHub Actions 워크플로 내에서 GitHub 종속성 그래프를 채우기 위한 실험적 지원을 제공합니다. 이 기능을 사용하도록 설정하려면 워크플로 파일에서 다음을 변경합니다.

  • VCPKG_FEATURE_FLAGS 값을 dependencygraph포함하도록 환경 변수를 설정합니다.
  • 환경 변수를 GITHUB_TOKEN${{ secrets.GITHUB_TOKEN }}으로 설정합니다.
  • 다음 권한 블록을 포함하여 GitHub Actions에서 리포지토리의 콘텐츠에 대한 쓰기 권한을 부여합니다. 이는 종속성 그래프 메타데이터를 리포지토리에 쓰는 데 필요합니다. 이렇게 하면 리포지토리에 커밋을 추가하거나 리포지토리의 내용을 수정하지 않습니다.
permissions:
  contents: write

리포지토리의 설정에서 GitHub 종속성 그래프를 사용하도록 설정해야 합니다(공용 리포지토리에서 기본적으로 사용). 프라이빗 리포지토리의 경우 GitHub 설명서에 따라 이 요구 사항을 충족하기 위해 종속성 그래프를 사용하도록 설정합니다 .

알려진 제한 사항

  • GitHub Actions 실행기가 번들로 제공되는 vcpkg 버전은 최신 버전이 아닐 수 있습니다. 최신 버전의 vcpkg를 사용하여 이 기능에 액세스하고 최신 버그 수정을 받습니다.
  • Dependabot 경고 및 Dependabot 끌어오기 요청과 같은 종속성 그래프에 의존하는 기능은 아직 사용할 수 없습니다. 이러한 기능에 관심이 있다면 알려주세요!

GitHub Actions 워크플로 예제

비고

이 예제에서는 일부 종속 포트를 나열하는 유효한 vcpkg.json 매니페스트가 있다고 가정합니다. 매니페스트에 대한 자세한 내용은 매니페스트 모드에 대한 설명서를 참조하세요.

name: Populate dependencies

on:
  push:
    branches: [ main ]
  workflow_dispatch:

permissions:
  contents: write

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  VCPKG_FEATURE_FLAGS: dependencygraph

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'recursive'

    # This will execute a dry-run, meaning that libraries will not be built and
    # installed, but they will still be reported to the GitHub dependency graph.
    # This step assumes `vcpkg` has been bootstrapped (run `./vcpkg/bootstrap-vcpkg`)
    - name: Run vcpkg
      run: ${{ github.workspace }}/vcpkg/vcpkg install --dry-run