Sdílet prostřednictvím


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říkladu asset-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.