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.exe
pliku 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` 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, uruchamiając polecenie nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>
.
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:
- Zmienianie domyślnej lokalizacji pamięci podręcznej binarnej
- Konfigurowanie lokalnej pamięci podręcznej binarnej
- Konfigurowanie binarnej pamięci podręcznej w przepływie pracy funkcji GitHub Actions przy użyciu pakietów GitHub
- Konfigurowanie binarnej pamięci podręcznej w przepływie pracy funkcji GitHub Actions przy użyciu pamięci podręcznej funkcji GitHub Actions