Vytvoření prostředku skriptu x Ukládání do mezipaměti zdroje pro NuGet
Poznámka:
Tato část popisuje experimentální funkci vcpkg, která se může kdykoli změnit nebo odebrat.
V tomto příkladu nastavíme informační kanál NuGet jako zdroj ukládání do mezipaměti pomocí skriptu pro obnovení a nasdílení artefaktů.
Požadavky
- nuget.exe
- Informační kanál balíčků NuGet
Krok 1: Vytvoření asset-source.nuspec
Vytvořte šablonu specifikace balíčku NuGet s následujícím obsahem:
<?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>
Krok 2: Vytvoření skriptu zprostředkovatele prostředků
Teď potřebujete vytvořit skript, který stáhne balíčky z informačního kanálu NuGet, pokud je k dispozici, a nahraje chybějící balíčky do informačního kanálu, pokud nejsou.
Vytvořte asset-provider.bat
obsah uvedený níže, nezapomeňte nahradit adresu URL informačního kanálu NuGet a cestu k asset-source.nuspec
jejich správným hodnotám ve vašem systému.
@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
)
Krok 3: Konfigurace zdrojů ukládání prostředků do mezipaměti
Teď, když jste vytvořili skript zprostředkovatele prostředků, musíte instruovat vcpkg, aby ho používal jako zdroj ukládání prostředků do mezipaměti. Uděláte to tak, že nastavíte následující proměnné prostředí:
$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"
POZNÁMKA: Nezapomeňte nahradit zástupné cesty ke skriptu zprostředkovatele prostředků a nuget.exe správnými cestami ve vašem systému.
X_VCPKG_ASSET_SOURCES
je proměnná prostředí používaná k nastavení zdrojů ukládání prostředků do mezipaměti pro vcpkg, které se mají použít. V tomto příkladu nastavíme následující hodnoty:
clear
se zbaví výchozího umístění ukládání prostředků do mezipaměti.x-script
přidá váš skript jako zdroj mezipaměti prostředků, první parametr indikuje, že příkazový řádek vcpkg by měl vyvolat, v tomto příkladuasset-provider.bat
voláme skript a předáváme některé požadované parametry.x-block-origin
vynutí, aby všechna stahování pocházejí z nakonfigurovaných zdrojů ukládání do mezipaměti prostředků.
VCPKG_KEEP_ENV_VARS
slouží k předávání proměnných prostředí do prostředí sestavení vcpkg. Během sestavení vcpkg vytvoří čisté prostředí přidáním NUGET
, abychom VCPKG_KEEP_ENV_VARS
zajistili, že se během sestavení předá umístění spustitelného souboru NuGet.
Jakmile bude vše správně nastavené, kdykoli vcpkg stáhne prostředek, který nahraje do vašeho informačního kanálu NuGet, aby se dal použít v budoucích staženích. Všimněte si, že prostředky uložené v mezipaměti jsou pojmenovány po jejich souboru SHA512 a verzi zadanou v asset-source.nuspec
. Pokud chcete mít pro své balíčky více meaninful názvy, můžete upravit šablonu balíčku a skript zprostředkovatele prostředků vlastní logikou.