NuGet에 대한 X-스크립트 자산 캐싱 원본 만들기
참고 항목
이 섹션에서는 언제든지 변경하거나 제거할 수 있는 vcpkg의 실험적 기능에 대해 설명합니다.
이 예제에서는 스크립트를 사용하여 아티팩트를 복원하고 푸시하여 NuGet 피드를 자산 캐싱 원본으로 설정합니다.
필수 조건
- nuget.exe
- NuGet 패키지 피드
1단계: 만들기 asset-source.nuspec
다음 내용을 사용하여 NuGet 패키지 사양 템플릿을 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>$sha$</id>
<version>1.0.0</version>
<description>vcpkg download asset</description>
<authors>vcpkg</authors>
</metadata>
<files>
<file src="$file$" />
</files>
</package>
2단계: 자산 공급자 스크립트 만들기
이제 사용 가능한 경우 NuGet 피드에서 패키지를 다운로드하고 없는 경우 누락된 패키지를 피드에 업로드하는 스크립트를 만들어야 합니다.
아래 제공된 내용으로 만들고 asset-provider.bat
, NuGet 피드 URL 및 경로를 asset-source.nuspec
시스템에서 올바른 값으로 바꿔야 합니다.
@echo off
set url=%1
set sha512=%2
set dst=%3
set "_dst=%dst:/=\%"
set "_sha512=%sha512:~0,90%"
cd /d %~dp3
%NUGET% install %sha512:~0,90% -Source https://your-nuget-feed-url
echo.
if exist %_sha512%.1.0.0 (
echo "Pull from the NuGet feed"
cd %_sha512%.1.0.0
REM Assume both are files not directories
echo "F" | xcopy /f *.part %_dst%
) else (
echo "Fetch from the url"
curl.exe -L %url% --create-dirs --output %dst%
REM Replace with the correct path
%NUGET% pack C:\path\to\asset-source.nuspec -BasePath %~dp3 -Properties "sha=%_sha512%;file=%dst%" -OutputDirectory %TEMP%
%NUGET% push -ApiKey az -SkipDuplicate %TEMP%\%_sha512%.1.0.0.nupkg -Source https://your-nuget-feed-url
)
3단계: 자산 캐싱 원본 구성
이제 자산 공급자 스크립트를 만들었으므로 vcpkg에 자산 캐싱 원본으로 사용하도록 지시해야 합니다. 이렇게 하려면 다음 환경 변수를 설정합니다.
$env:X_VCPKG_ASSET_SOURCES="clear;x-script,C:/path/to/asset-provider.bat {url} {sha512} {dst};x-block-origin"
$env:NUGET="C:/path/to/nuget.exe"
$env:VCPKG_KEEP_ENV_VARS="NUGET"
참고: 자산 공급자 스크립트 및 nuget.exe의 자리 표시자 경로를 시스템의 올바른 경로로 바꿔야 합니다.
X_VCPKG_ASSET_SOURCES
는 vcpkg에서 사용할 자산 캐싱 원본을 설정하는 데 사용되는 환경 변수입니다. 이 예제에서는 다음 값을 설정합니다.
clear
기본 자산 캐싱 위치를 제거합니다.x-script
는 스크립트를 자산 캐싱 원본으로 추가하고, 첫 번째 매개 변수는 명령줄 vcpkg가 호출되어야 하며, 이 예제에서는 스크립트를asset-provider.bat
호출하고 몇 가지 필수 매개 변수를 전달합니다.x-block-origin
는 구성된 자산 캐싱 원본에서 모든 다운로드를 강제로 가져옵니다.
VCPKG_KEEP_ENV_VARS
는 환경 변수를 vcpkg의 빌드 환경 분석으로 전달하는 데 사용됩니다. 빌드하는 동안 vcpkg는 빌드 중에 NuGet 실행 파일이 전달되도록 하여 NUGET
VCPKG_KEEP_ENV_VARS
클린 환경을 만듭니다.
모든 것이 제대로 설정되면 vcpkg가 자산을 다운로드할 때마다 향후 다운로드에 사용할 NuGet 피드에 업로드됩니다. 캐시된 자산의 이름은 해당 파일 SHA512 및 지정된 버전의 이름을 따서 지정됩니다 asset-source.nuspec
. 패키지에 대한 더 의미 있는 이름을 사용하려는 경우 사용자 고유의 논리를 사용하여 패키지 템플릿 및 자산 공급자 스크립트를 수정할 수 있습니다.
vcpkg