다음을 통해 공유


자습서: NuGet 피드를 사용하여 vcpkg 이진 캐시 설정

참고 항목

이 자습서에서는 Azure Artifacts에서 호스트되는 NuGet 피드를 사용하지만 일부 변경 내용이 포함된 GitHub 패키지와 같은 다른 NuGet 피드 공급자에 대해 동일한 지침을 사용할 수 있습니다.

vcpkg는 NuGet 패키지 피드를 사용하여 편리한 방법으로 이진 패키지를 업로드하고 복원할 수 있도록 지원합니다.

NuGet 패키지 피드에는 액세스 제어 기능이 있어 조직 또는 작업 그룹 전체에서 리소스에 대한 액세스를 제한하는 것이 이상적입니다. NuGet 피드는 Azure Artifacts 및 GitHub 패키지 레지스트리와 같은 여러 클라우드 스토리지 공급자에서 지원됩니다.

이 자습서에서는 다음 작업을 수행하는 방법을 알아봅니다.

필수 조건

  • 터미널
  • vcpkg
  • NuGet 패키지 피드 또는 그렇지 않은 경우 따라야 할 Azure DevOps 계정
  • 터미널
  • vcpkg
  • NuGet 패키지 피드 또는 그렇지 않은 경우 따라야 할 Azure DevOps 계정
  • mono 시스템에 설치된 패키지

1 - NuGet 피드 설정

기존 NuGet 패키지 피드가 이미 있는 경우 이 단계를 건너뜁니다.

지침 에 따라 Azure Artifacts NuGet 피드를 설정합니다.

선택한 다른 NuGet 패키지 피드 공급자를 사용할 수도 있습니다.

2 - NuGet 원본 추가

참고 항목

Linux에서 실행nuget.exe해야 합니다mono. 배포판의 시스템 패키지 관리자를 사용하여 설치 mono 할 수 있습니다.

vcpkg는 이진 캐싱 작업 중에 사용하는 실행 파일의 nuget.exe 자체 복사본을 획득합니다. 이 자습서에서는 vcpkg 획득을 nuget.exe사용합니다. 이 vcpkg fetch nuget 명령은 vcpkg에서 획득한 nuget.exe위치를 출력하여 필요한 경우 실행 파일을 다운로드합니다.

다음 명령을 실행하여 NuGet 피드를 원본으로 추가하고 선택한 <feed url> 이름을 NuGet 피드의 URL로 바꿉 <feed name> 다.

.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>

아래 명령을 실행하여 NuGet 실행 파일에 대한 경로를 가져옵니다.

vcpkg fetch nuget

그러면 다음과 같은 C:\path\to\nuget.exe출력이 표시됩니다. 이 경로를 기록해 둡다. 이전 단계에서 가져온 경로를 사용하여 다음 명령을 실행합니다.

C:\path\to\nuget.exe sources add -Name <feed name> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources add -Name <feed name> -Source <feed url>

API 키 제공

일부 공급자는 API 키를 사용하여 NuGet 패키지를 피드에 푸시해야 합니다. 예를 들어 GitHub 패키지에는 API 키로 GitHub PAT(개인용 액세스 토큰)가 필요합니다. Azure Artifacts를 사용하는 경우 API 키가 대신입니다 AzureDevOps .

다음 명령을 사용하여 NuGet 피드에 푸시된 모든 패키지에 대한 API 키를 설정하고 피드의 API 키로 바꿉 <apiKey> 니다.

.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>

아래 명령을 실행하여 NuGet 실행 파일에 대한 경로를 가져옵니다.

vcpkg fetch nuget

그러면 다음과 같은 C:\path\to\nuget.exe출력이 표시됩니다. 이 경로를 기록해 둡다. 이전 단계에서 가져온 경로를 사용하여 다음 명령을 실행합니다.

C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>

인증 자격 증명 제공

NuGet 피드는 패키지를 다운로드하고 업로드할 수 있도록 인증이 필요할 수 있습니다. 이 경우 명령에 매개 변수로 추가하여 자격 증명을 nuget sources add 제공할 수 있습니다.

예시:

nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText

Azure Artifacts와 같은 일부 공급자는 다른 인증 방법이 필요할 수 있습니다. 자세한 내용은 프라이빗 NuGet 피드 인증 문서를 참조하세요.

nuget.config 파일 사용

또는 아래 템플릿에 nuget.config 따라 파일을 사용하여 NuGet 원본을 구성할 수 있습니다.

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="<feed url>" />
  </config>
  <apiKeys>
    <add key="<feed url>" value="<apikey>" />
  </apiKeys>
  <packageSources>
    <clear />
    <add  key="<feed name>" value="<feed url>" />
  </packageSources>
  <packageSourcesCredentials>
    <<feed name>>
      <add key="Username" value="<username>" />
      <add key="Password" value="<password>" />
    </<feed name>>
  </packageSourcesCredentials>
</configuration>

예제 nuget.config 파일:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="https://contoso.org/packages/" />
  </config>
  <apikeys>
    <add key="https://contoso.org/packages/" value="encrypted_api_key" />
  </apikeys>
  <packageSources>
    <clear />
    <add key="Contoso" value="https://contoso.org/packages/" />
  </packageSources>
  <packageSourcesCredentials>
    <Contoso>
      <add key="Username" value="user" />
      <add key="Password" value="..." />
    </Contoso>
  </packageSourcesCredentials>
</configuration>

vcpkg를 사용하려면 파일에서 nuget.config NuGet defaultPushSource 피드의 URL을 기본 원본으로 사용하여 이진 패키지를 푸시해야 합니다.

Azure Artifacts NuGet 피드에 패키지를 업로드하는 경우 실행nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>하여 원본의 API 키로 사용합니다AzureDevOps. 그렇지 않으면 해당 값이 있는 경우 피드의 적절한 API 키로 바꿉다.

<clear /> 이전에 구성된 다른 값을 무시할 원본을 추가합니다. 원하는 경우 이 파일에서 여러 원본을 정의하고 각 원본에 대한 항목을 사용할 <add key="<feed name>" value="<feed url>" /> 수 있습니다.

다음 명령을 실행하여 파일을 사용하여 NuGet 원본을 nuget.config 추가하고 파일의 경로 nuget.config 로 바꿉 <path to nuget.config> 다.

.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>

아래 명령을 실행하여 NuGet 실행 파일에 대한 경로를 가져옵니다.

vcpkg fetch nuget

그러면 다음과 같은 C:\path\to\nuget.exe출력이 표시됩니다. 이 경로를 기록해 둡다. 이전 단계에서 가져온 경로를 사용하여 다음 명령을 실행합니다.

C:\path\to\nuget.exe sources add -ConfigFile <path to nuget.config>
mono `vcpkg fetch nuget | tail -n 1` sources add -ConfigFile <path to nuget.config>

3 - NuGet 피드를 사용하도록 vcpkg 구성

환경 변수를 VCPKG_BINARY_SOURCES 다음과 같이 설정합니다.

$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

파일을 사용하는 경우 대신 다음을 nuget.config 수행합니다.

$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"

파일을 사용하는 경우 대신 다음을 nuget.config 수행합니다.

set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"

참고 항목

명령을 사용하여 export 설정 VCPKG_BINARY_SOURCES 하면 현재 셸 세션에만 영향을 미칩니다. 세션 간에 이 변경 내용을 영구적으로 변경하려면 셸의 프로필 스크립트(예: 또는~/.zshrc)에 ~/.bashrc 명령을 추가 export 해야 합니다.

export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

파일을 사용하는 경우 대신 다음을 nuget.config 수행합니다.

export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

정말 간단하죠! 이제 vcpkg는 NuGet 피드에서 패키지를 업로드하거나 복원합니다.

다음 단계

다음에 시도할 다른 작업은 다음과 같습니다.