Udostępnij za pośrednictwem


Samouczek: konfigurowanie pamięci podręcznej binarnej vcpkg przy użyciu źródła danych NuGet

Uwaga

W tym samouczku jest używany kanał informacyjny NuGet hostowany w usłudze Azure Artifacts, ale te same instrukcje mogą być używane dla innych dostawców źródeł danych NuGet, na przykład: Pakiety GitHub z pewnymi zmianami.

Narzędzie vcpkg obsługuje używanie źródeł danych pakietów NuGet do przekazywania i przywracania pakietów binarnych w wygodny sposób.

Źródła danych pakietów NuGet mają możliwości kontroli dostępu, które sprawiają, że idealnie nadają się do ograniczania dostępu do zasobów w organizacji lub grupie roboczej. Źródła danych NuGet są obsługiwane przez kilku dostawców magazynu w chmurze, takich jak Azure Artifacts i Rejestr pakietów GitHub.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

Wymagania wstępne

  • Terminal
  • vcpkg
  • Źródło danych pakietów NuGet lub jeśli nie, konto usługi Azure DevOps, które należy wykonać
  • Terminal
  • vcpkg
  • Źródło danych pakietów NuGet lub jeśli nie, konto usługi Azure DevOps, które należy wykonać
  • Pakiet mono zainstalowany w systemie

1 — Konfigurowanie kanału informacyjnego NuGet

Pomiń ten krok, jeśli masz już istniejący kanał informacyjny pakietów NuGet.

Postępuj zgodnie z instrukcjami, aby skonfigurować źródło danych NuGet usługi Azure Artifacts.

Możesz również użyć dowolnego innego wybranego dostawcy kanału informacyjnego pakietów NuGet.

2 — Dodawanie źródła NuGet

Uwaga

W systemie Linux należy mono wykonać polecenie nuget.exe. Instalację można zainstalować mono przy użyciu menedżera pakietów systemowych dystrybucji.

Narzędzie vcpkg uzyskuje własną kopię nuget.exe pliku wykonywalnego, którego używa podczas operacji buforowania binarnego. W tym samouczku jest używany element vcpkg-acquired nuget.exe. Polecenie vcpkg fetch nuget zwraca lokalizację pobranego nuget.exepliku vcpkg, pobierając plik wykonywalny w razie potrzeby.

Uruchom następujące polecenie, aby dodać kanał informacyjny NuGet jako źródło, zastąp <feed name> ciąg dowolną wybraną nazwą i <feed url> adresem URL kanału informacyjnego NuGet.

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

Wykonaj poniższe polecenie, aby pobrać ścieżkę do pliku wykonywalnego NuGet:

vcpkg fetch nuget

Spowoduje to udostępnienie danych wyjściowych, które wyglądają mniej więcej tak: C:\path\to\nuget.exe. Zanotuj tę ścieżkę. Korzystając ze ścieżki uzyskanej z poprzedniego kroku, uruchom następujące polecenie:

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>

Podawanie klucza interfejsu API

Niektórzy dostawcy wymagają wypychania pakietów NuGet do źródła danych przy użyciu klucza interfejsu API. Na przykład pakiety GitHub wymagają identyfikatora PAT w usłudze GitHub (osobistego tokenu dostępu) jako klucza interfejsu API; Jeśli używasz usługi Azure Artifacts, klucz interfejsu API jest AzureDevOps zamiast tego.

Użyj następującego polecenia, aby ustawić klucz interfejsu API dla wszystkich pakietów wypychanych do źródła danych NuGet, zastąp <apiKey> ciąg kluczem interfejsu API źródła danych.

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

Wykonaj poniższe polecenie, aby pobrać ścieżkę do pliku wykonywalnego NuGet:

vcpkg fetch nuget

Spowoduje to udostępnienie danych wyjściowych, które wyglądają mniej więcej tak: C:\path\to\nuget.exe. Zanotuj tę ścieżkę. Korzystając ze ścieżki uzyskanej z poprzedniego kroku, uruchom następujące polecenie:

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

Podawanie poświadczeń uwierzytelniania

Źródło danych NuGet może wymagać uwierzytelniania, aby umożliwić pobieranie i przekazywanie pakietów. Jeśli tak jest, możesz podać poświadczenia, dodając je jako parametry do nuget sources add polecenia.

Na przykład:

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

Niektórzy dostawcy, tacy jak Azure Artifacts, mogą wymagać różnych metod uwierzytelniania, przeczytaj artykuł Uwierzytelnianie w prywatnych kanałach informacyjnych NuGet, aby dowiedzieć się więcej.

nuget.config Korzystanie z pliku

Alternatywnie możesz użyć nuget.config pliku do skonfigurowania źródeł NuGet, korzystając z poniższego szablonu:

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>

Przykład pliku 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>

Narzędzie vcpkg wymaga ustawienia defaultPushSource elementu w nuget.config pliku, użyj adresu URL źródła danych NuGet jako domyślnego źródła do wypychania pakietów binarnych.

Jeśli przekazujesz pakiety do źródła danych NuGet usługi Azure Artifacts, użyj go AzureDevOps jako klucza interfejsu API źródła. W przeciwnym razie zastąp wartość odpowiednim kluczem interfejsu API źródła danych, jeśli go masz.

Dodaj źródło, <clear /> aby zignorować inne wcześniej skonfigurowane wartości. Jeśli chcesz, możesz zdefiniować wiele źródeł w tym pliku, użyj <add key="<feed name>" value="<feed url>" /> wpisu dla każdego źródła.

Uruchom następujące polecenie, aby dodać źródło NuGet przy użyciu nuget.config pliku, zastąp <path to nuget.config> ciąg ścieżką do nuget.config pliku:

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

Wykonaj poniższe polecenie, aby pobrać ścieżkę do pliku wykonywalnego NuGet:

vcpkg fetch nuget

Spowoduje to udostępnienie danych wyjściowych, które wyglądają mniej więcej tak: C:\path\to\nuget.exe. Zanotuj tę ścieżkę. Korzystając ze ścieżki uzyskanej z poprzedniego kroku, uruchom następujące polecenie:

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 — Konfigurowanie narzędzia vcpkg do korzystania ze źródła danych NuGet

Ustaw zmienną VCPKG_BINARY_SOURCES środowiskową w następujący sposób:

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

Jeśli używasz nuget.config pliku, zamiast tego wykonaj następujące czynności:

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

Jeśli używasz nuget.config pliku, zamiast tego wykonaj następujące czynności:

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

Uwaga

Ustawienie VCPKG_BINARY_SOURCES przy użyciu export polecenia będzie miało wpływ tylko na bieżącą sesję powłoki. Aby wprowadzić tę zmianę na stałe między sesjami, należy dodać export polecenie do skryptu profilu powłoki (np ~/.bashrc . lub ~/.zshrc).

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

Jeśli używasz nuget.config pliku, zamiast tego wykonaj następujące czynności:

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

I to wszystko. Narzędzie vcpkg będzie teraz przekazywać lub przywracać pakiety ze źródła danych NuGet.

Następne kroki

Poniżej przedstawiono inne zadania do wypróbowania: