Sdílet prostřednictvím


Kurz: Nastavení binární mezipaměti vcpkg pomocí informačního kanálu NuGet

Poznámka:

Tento kurz používá informační kanál NuGet hostovaný v Azure Artifacts, ale stejné pokyny je možné použít pro jiné poskytovatele informačního kanálu NuGet, například GitHub Packages, s některými změnami.

Vcpkg podporuje použití kanálů balíčků NuGet k nahrání a obnovení binárních balíčků pohodlným způsobem.

Informační kanály balíčků NuGet mají možnosti řízení přístupu, díky kterým jsou ideální pro omezení přístupu k prostředkům ve vaší organizaci nebo pracovní skupině. Informační kanály NuGet podporují několik poskytovatelů cloudového úložiště, jako jsou Azure Artifacts a registr balíčků GitHubu.

V tomto kurzu se naučíte:

Požadavky

  • Terminál
  • vcpkg
  • Informační kanál balíčku NuGet nebo pokud ne, účet Azure DevOps, který se má sledovat
  • Terminál
  • vcpkg
  • Informační kanál balíčku NuGet nebo pokud ne, účet Azure DevOps, který se má sledovat
  • Balíček mono nainstalovaný ve vašem systému

1. Nastavení informačního kanálu NuGet

Tento krok přeskočte, pokud už máte existující informační kanál balíčků NuGet.

Podle pokynů nastavte informační kanál NuGet Azure Artifacts.

Můžete také použít libovolného jiného poskytovatele informačního kanálu Balíčků NuGet.

2. Přidání zdroje NuGet

Poznámka:

V Linuxu je potřeba mono spustit nuget.exe. Můžete nainstalovat mono pomocí správce systémových balíčků vaší distribuce.

Vcpkg získá vlastní kopii spustitelného nuget.exe souboru, který používá při operacích binární mezipaměti. Tento kurz používá vcpkg-acquired nuget.exe. Příkaz vcpkg fetch nuget vypíše umístění souboru vcpkg-acquired nuget.exe, v případě potřeby stáhne spustitelný soubor.

Spuštěním následujícího příkazu přidejte informační kanál NuGet jako zdroj, nahraďte <feed name> libovolným názvem podle vašeho výběru a <feed url> adresou URL informačního kanálu NuGet.

.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>

Spuštěním následujícího příkazu načtěte cestu ke spustitelnému souboru NuGet:

vcpkg fetch nuget

Tím se zobrazí výstup, který vypadá nějak takto C:\path\to\nuget.exe. Poznamenejte si tuto cestu. Pomocí cesty získané z předchozího kroku spusťte následující příkaz:

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>

Zadání klíče rozhraní API

Někteří poskytovatelé vyžadují, abyste balíčky NuGet odeslali do informačního kanálu pomocí klíče rozhraní API. Například Služba GitHub Packages vyžaduje jako klíč rozhraní API token PAT (Pat) GitHubu; pokud používáte Azure Artifacts, je AzureDevOps místo toho klíč rozhraní API.

Pomocí následujícího příkazu nastavte klíč rozhraní API pro všechny balíčky nabízené do informačního kanálu NuGet a nahraďte <apiKey> ho klíčem rozhraní API vašeho informačního kanálu.

.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>

Spuštěním následujícího příkazu načtěte cestu ke spustitelnému souboru NuGet:

vcpkg fetch nuget

Tím se zobrazí výstup, který vypadá nějak takto C:\path\to\nuget.exe. Poznamenejte si tuto cestu. Pomocí cesty získané z předchozího kroku spusťte následující příkaz:

C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>

Zadání přihlašovacích údajů pro ověřování

Informační kanál NuGet může vyžadovat ověření, které vám umožní stahovat a nahrávat balíčky. V takovém případě můžete zadat přihlašovací údaje tak, že je přidáte jako parametry do nuget sources add příkazu.

Příklad:

nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText

Někteří poskytovatelé, jako je Azure Artifacts, můžou vyžadovat různé metody ověřování. Další informace najdete v článku o ověření v privátních informačních kanálech NuGet.

nuget.config Použití souboru

Případně můžete použít nuget.config soubor ke konfiguraci zdrojů NuGet podle následující šablony:

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>

Příklad souboru 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 vyžaduje, abyste v nuget.config souboru nastavili defaultPushSource adresu URL informačního kanálu NuGet jako výchozí zdroj pro nabízení binárních balíčků.

Pokud balíčky nahráváte do informačního kanálu NuGet Azure Artifacts, použijte AzureDevOps ho jako klíč rozhraní API zdroje spuštěním nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>příkazu . V opačném případě nahraďte hodnotu správným klíčem rozhraní API informačního kanálu, pokud ho máte.

Přidejte zdroj, <clear /> který bude ignorovat ostatní dříve nakonfigurované hodnoty. Pokud chcete, můžete v tomto souboru definovat více zdrojů, použít <add key="<feed name>" value="<feed url>" /> položku pro každý zdroj.

Spuštěním následujícího příkazu přidejte zdroj NuGet pomocí nuget.config souboru, nahraďte <path to nuget.config> cestou k souboru nuget.config :

.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>

Spuštěním následujícího příkazu načtěte cestu ke spustitelnému souboru NuGet:

vcpkg fetch nuget

Tím se zobrazí výstup, který vypadá nějak takto C:\path\to\nuget.exe. Poznamenejte si tuto cestu. Pomocí cesty získané z předchozího kroku spusťte následující příkaz:

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. Konfigurace vcpkg pro použití informačního kanálu NuGet

Nastavte proměnnou VCPKG_BINARY_SOURCES prostředí následujícím způsobem:

$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Pokud používáte nuget.config soubor, udělejte toto:

$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"

Pokud používáte nuget.config soubor, udělejte toto:

set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"

Poznámka:

Nastavení VCPKG_BINARY_SOURCES pomocí export příkazu ovlivní pouze aktuální relaci prostředí. Pokud chcete tuto změnu provést trvale napříč relacemi, budete muset příkaz přidat export do skriptu profilu vašeho prostředí (např ~/.bashrc . nebo ~/.zshrc).

export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Pokud používáte nuget.config soubor, udělejte toto:

export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

A to je vše! Vcpkg teď nahraje nebo obnoví balíčky z informačního kanálu NuGet.

Další kroky

Tady jsou další úkoly, které můžete vyzkoušet: