Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
В этом руководстве используются веб-каналы NuGet, размещенные в пакетах GitHub, но те же инструкции можно использовать для других поставщиков веб-каналов NuGet, например: Артефакты Azure с минимальными изменениями.
Пакеты GitHub предлагают удобный репозиторий для двоичных пакетов NuGet, созданных vcpkg. В этом руководстве показано, как настроить двоичный кэш в рабочем процессе GitHub Actions, использующего пакеты GitHub в качестве удаленного хранилища.
Из этого руководства вы узнаете, как выполнять следующие задачи:
Необходимые компоненты
- Редактор кода
- Репозиторий GitHub с помощью GitHub Actions
- Проект с помощью vcpkg
1. Настройка проверки подлинности для пакетов GitHub
В этом руководстве используется встроенный инструмент GITHUB_TOKEN, предоставленный GitHub Actions. Чтобы включить доступ для чтения и записи к пакетам GitHub, добавьте следующий permissions блок в рабочий процесс:
permissions:
packages: write
Это предоставляет необходимые разрешения GITHUB_TOKEN, packages:write и packages:read.
Использование GITHUB_TOKEN имеет несколько преимуществ:
- Нет необходимости создавать или управлять дополнительными секретами
- Работает автоматически для запросов на вытягивание из вилок (с доступом только для чтения)
- Область применения к определенному репозиторию и запуску рабочего процесса
Примечание.
Кроме того, вы можете использовать классический личный маркер доступа (PAT), если вам нужен доступ между репозиториями или другие расширенные сценарии. Следуйте инструкциям GitHub, чтобы создать классический личный маркер доступа (PAT) с разрешениями packages:write и packages:read, затем добавьте его в качестве секрета в ваш репозиторий и используйте ${{ secrets.YOUR_PAT_NAME }} вместо ${{ secrets.GITHUB_TOKEN }} в приведенных ниже примерах.
2 — bootstrap vcpkg
vcpkg получает собственную копию исполняемого nuget.exe файла, который он использует во время двоичных операций кэширования. В этом руководстве используется nuget.exeприобретенный vcpkg.
Добавьте шаг для загрузки vcpkg в рабочем процессе:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Возможно, вам потребуется заменить расположение скрипта начальной загрузки vcpkg правильным для рабочего процесса, в этом руководстве предполагается, что vcpkg находится в vcpkg папке в корневом каталоге репозитория.
3. Настройка обязательных переменных среды
Добавьте следующие переменные среды в файл рабочего процесса (замените <OWNER> именем пользователя или именем организации GitHub):
env:
USERNAME: <OWNER>
VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
VCPKG_BINARY_SOURCES: "clear;nuget,https://nuget.pkg.github.com/<OWNER>/index.json,readwrite"
Возможно, потребуется заменить значение VCPKG_EXE расположения исполняемого файла vcpkg, созданного на шаге начальной загрузки vcpkg .
На этом шаге вы настраиваете VCPKG_BINARY_SOURCES использование веб-канала пакетов GitHub в качестве источника двоичного кэширования, ознакомьтесь со ссылкой на двоичное кэширование, чтобы узнать больше.
4. Добавление пакетов GitHub в качестве источника NuGet
Команда vcpkg fetch nuget выводит расположение приобретенного nuget.exevcpkg, скачивая исполняемый файл при необходимости.
Добавьте следующий шаг в файл рабочего процесса, чтобы настроить источник NuGet с помощью GITHUB_TOKEN:
permissions:
packages: write
jobs:
build:
runs-on: windows-latest
steps:
# ... other steps ...
- name: Add NuGet sources
shell: pwsh
run: |
.$(${{ env.VCPKG_EXE }} fetch nuget) `
sources add `
-Source "${{ env.FEED_URL }}" `
-StorePasswordInClearText `
-Name GitHubPackages `
-UserName "${{ env.USERNAME }}" `
-Password "${{ secrets.GITHUB_TOKEN }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GITHUB_TOKEN }}" `
-Source "${{ env.FEED_URL }}"
В Linux необходимо mono выполнить nuget.exe. Вы можете установить mono с помощью системного диспетчера пакетов дистрибутива:
apt install mono-complete
Обратите внимание, что ubuntu-22.04 GitHub Actions runners поставляются с предустановленными компонентами, но начиная с mono (к которому ubuntu-24.04 в настоящее время относится), ubuntu-latest больше не включен в предустановку.
permissions:
packages: write
jobs:
build:
runs-on: ubuntu-latest
steps:
# ... other steps ...
- name: Add NuGet sources
shell: bash
env:
VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
USERNAME: <OWNER>
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
run: |
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
sources add \
-Source "${{ env.FEED_URL }}" \
-StorePasswordInClearText \
-Name GitHubPackages \
-UserName "${{ env.USERNAME }}" \
-Password "${{ secrets.GITHUB_TOKEN }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GITHUB_TOKEN }}" \
-Source "${{ env.FEED_URL }}"
Примечание.
По умолчанию GITHUB_TOKEN , предоставленному GitHub Actions, нет необходимых разрешений для отправки или скачивания кэшированных пакетов.
Чтобы включить кэширование пакетов в пакеты GitHub, используйте вместо этого личный маркер доступа (PAT) и убедитесь, что он включает следующие области:
packages:readpackages:write
Сохраните PAT в качестве секрета репозитория (например, VCPKG_PAT_TOKEN) и ссылайтесь на него в рабочем процессе.
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
Вот и все! vcpkg теперь будет отправлять или восстанавливать пакеты из веб-канала NuGet, размещенного в пакетах GitHub в рабочем процессе GitHub Actions.
Следующие шаги
Ниже приведены другие задачи, которые необходимо выполнить следующим образом: