Руководство. Настройка двоичного кэша vcpkg с помощью веб-канала NuGet
Примечание.
В этом руководстве используется веб-канал NuGet, размещенный в Azure Artifacts, но те же инструкции можно использовать для других поставщиков веб-каналов NuGet, например: пакеты GitHub с некоторыми изменениями.
vcpkg поддерживает использование веб-каналов пакетов NuGet для отправки и восстановления двоичных пакетов удобным способом.
Веб-каналы пакетов NuGet имеют возможности управления доступом, которые делают их идеальными для ограничения доступа к ресурсам в организации или рабочей группе. Веб-каналы NuGet поддерживаются несколькими поставщиками облачных хранилищ, такими как, azure Artifacts и реестр пакетов GitHub.
Из этого руководства вы узнаете, как выполнять следующие задачи:
Необходимые компоненты
- Терминал
- vcpkg
- Веб-канал пакетов NuGet или если вы этого не сделали, учетная запись Azure DevOps, которую необходимо выполнить вместе
- Терминал
- vcpkg
- Веб-канал пакетов NuGet или если вы этого не сделали, учетная запись Azure DevOps, которую необходимо выполнить вместе
- Пакет, установленный в системе
mono
1. Настройка веб-канала NuGet
Пропустите этот шаг, если у вас уже есть веб-канал пакетов NuGet.
Следуйте инструкциям по настройке веб-канала NuGet Azure Artifacts.
Вы также можете использовать любой другой поставщик веб-канала пакетов NuGet по своему усмотрению.
2. Добавление источника NuGet
Примечание.
В Linux необходимо mono
выполнить nuget.exe
. Вы можете установить mono
с помощью системного диспетчера пакетов дистрибутива.
vcpkg получает собственную копию исполняемого nuget.exe
файла, который он использует во время двоичных операций кэширования. В этом руководстве используется nuget.exe
приобретенный vcpkg. Команда vcpkg fetch nuget
выводит расположение приобретенного nuget.exe
vcpkg, скачивая исполняемый файл при необходимости.
Выполните следующую команду, чтобы добавить веб-канал NuGet в качестве источника, замените <feed name>
любое имя выбранного веб-канала и <feed url>
URL-адресом веб-канала NuGet.
.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>
Выполните следующую команду, чтобы получить путь к исполняемому файлу NuGet:
vcpkg fetch nuget
Это обеспечит выходные данные, которые выглядят примерно так C:\path\to\nuget.exe
. Запишите этот путь.
Используя путь, полученный на предыдущем шаге, выполните следующую команду:
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>
Предоставление ключа API
Для некоторых поставщиков требуется отправить пакеты NuGet в веб-канал с помощью ключа API. Например, для пакетов GitHub требуется GitHub PAT (личный маркер доступа) в качестве ключа API; Если вы используете Azure Artifacts, то вместо этого используется AzureDevOps
ключ API.
Используйте следующую команду, чтобы задать ключ API для всех пакетов, отправленных в веб-канал NuGet, замените <apiKey>
ключОМ API веб-канала.
.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>
Выполните следующую команду, чтобы получить путь к исполняемому файлу NuGet:
vcpkg fetch nuget
Это обеспечит выходные данные, которые выглядят примерно так C:\path\to\nuget.exe
. Запишите этот путь.
Используя путь, полученный на предыдущем шаге, выполните следующую команду:
C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>
Предоставление учетных данных для аутентификации
Веб-канал NuGet может потребовать проверки подлинности, чтобы вы могли скачать и отправить пакеты. Если это так, вы можете предоставить учетные данные, добавив их в качестве параметров в nuget sources add
команду.
Например:
nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText
Некоторым поставщикам, таким как Артефакты Azure, могут потребоваться различные методы проверки подлинности, ознакомьтесь со статьей "Проверка подлинности в частных веб-каналах NuGet", чтобы узнать больше.
nuget.config
Использование файла
Кроме того, вы можете использовать nuget.config
файл для настройки источников NuGet, следуя следующему шаблону:
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>
Пример файла 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 требует, чтобы вы установили defaultPushSource
в nuget.config
файле URL-адрес веб-канала NuGet в качестве источника по умолчанию для отправки двоичных пакетов.
Если вы отправляете пакеты в веб-канал NuGet Azure Artifacts, используйте AzureDevOps
его в качестве ключа API источника, выполнив команду nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>
.
В противном случае замените значение соответствующим ключом API веб-канала, если у вас есть.
Добавьте источник, <clear />
чтобы игнорировать другие ранее настроенные значения. Если вы хотите, можно определить несколько источников в этом файле, используйте <add key="<feed name>" value="<feed url>" />
запись для каждого источника.
Выполните следующую команду, чтобы добавить источник NuGet с помощью nuget.config
файла, замените <path to nuget.config>
путь к nuget.config
файлу:
.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>
Выполните следующую команду, чтобы получить путь к исполняемому файлу NuGet:
vcpkg fetch nuget
Это обеспечит выходные данные, которые выглядят примерно так C:\path\to\nuget.exe
. Запишите этот путь.
Используя путь, полученный на предыдущем шаге, выполните следующую команду:
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. Настройка vcpkg для использования веб-канала NuGet
VCPKG_BINARY_SOURCES
Задайте переменную среды следующим образом:
$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Если вы используете nuget.config
файл, вместо этого сделайте следующее:
$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"
Если вы используете nuget.config
файл, вместо этого сделайте следующее:
set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"
Примечание.
Установка VCPKG_BINARY_SOURCES
с помощью export
команды влияет только на текущий сеанс оболочки. Чтобы сделать это изменение постоянным в сеансах, необходимо добавить export
команду в скрипт профиля оболочки (например, ~/.bashrc
или ~/.zshrc
).
export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Если вы используете nuget.config
файл, вместо этого сделайте следующее:
export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
Вот и все! vcpkg теперь будет отправлять или восстанавливать пакеты из веб-канала NuGet.
Следующие шаги
Ниже приведены другие задачи, которые необходимо выполнить следующим образом: