자습서: 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 피드에서 패키지를 업로드하거나 복원합니다.
다음 단계
다음에 시도할 다른 작업은 다음과 같습니다.
vcpkg