다음을 통해 공유


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 실행 파일이 전달되도록 하여 NUGETVCPKG_KEEP_ENV_VARS 클린 환경을 만듭니다.

모든 것이 제대로 설정되면 vcpkg가 자산을 다운로드할 때마다 향후 다운로드에 사용할 NuGet 피드에 업로드됩니다. 캐시된 자산의 이름은 해당 파일 SHA512 및 지정된 버전의 이름을 따서 지정됩니다 asset-source.nuspec. 패키지에 대한 더 의미 있는 이름을 사용하려는 경우 사용자 고유의 논리를 사용하여 패키지 템플릿 및 자산 공급자 스크립트를 수정할 수 있습니다.