Tutorial: Configuración de una caché binaria de vcpkg mediante paquetes de GitHub en un flujo de trabajo de Acciones de GitHub
Nota:
En este tutorial se usan fuentes de NuGet hospedadas en paquetes de GitHub, pero se pueden usar las mismas instrucciones para otros proveedores de fuentes nuGet, por ejemplo: Azure Artifacts, con cambios mínimos.
Paquetes de GitHub ofrece un repositorio práctico para los paquetes binarios de NuGet generados por vcpkg. En este tutorial, se muestra cómo configurar una caché binaria en el flujo de trabajo de Acciones de GitHub que usa paquetes de GitHub como almacenamiento remoto.
En este tutorial, aprenderá a:
Requisitos previos
- Editor de código
- Un repositorio de GitHub mediante Acciones de GitHub
- Un proyecto con vcpkg
1- Proporcionar un token de acceso personal de GitHub
Siga las instrucciones de GitHub para generar un token de acceso personal (PAT) clásico para el repositorio, asegúrese de concederle los packages:write
permisos y packages:read
.
A continuación, agregue el PAT de GitHub como secreto disponible en los flujos de trabajo de la acción de GitHub del repositorio. En este tutorial se supone que asigna un nombre al secreto como GH_PACKAGES_TOKEN
.
El PAT integrado proporcionado por GITHUB_TOKEN
solo tiene el packages:read
permiso , puede usarlo si planea tener una caché binaria de solo lectura en el flujo de trabajo.
2 - Bootstrap vcpkg
vcpkg adquiere su propia copia del nuget.exe
ejecutable que usa durante las operaciones de almacenamiento en caché binarias. En este tutorial se usa vcpkg-acquired nuget.exe
.
Agregue un paso para arrancar vcpkg en el flujo de trabajo:
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
Es posible que deba reemplazar la ubicación del script de arranque vcpkg por el correcto para el flujo de trabajo, en este tutorial se supone que vcpkg se encuentra en una vcpkg
carpeta de la raíz del repositorio.
3- Configuración de variables de entorno necesarias
Agregue las siguientes variables de entorno al archivo de flujo de trabajo (reemplace por <OWNER>
el nombre de usuario o la organización de 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"
Es posible que tenga que reemplazar el valor de VCPKG_EXE
por la ubicación del archivo ejecutable vcpkg generado en el paso de vcpkg de arranque.
En este paso va a configurar VCPKG_BINARY_SOURCES
para usar la fuente paquetes de GitHub como origen de almacenamiento en caché binario, lea la referencia de almacenamiento en caché binario para obtener más información.
4- Agregar paquetes de GitHub como origen de NuGet
El vcpkg fetch nuget
comando genera la ubicación del archivo vcpkg-adquirido nuget.exe
, descargando el archivo ejecutable si es necesario.
Agregue el paso siguiente en el archivo de flujo de trabajo de Acciones de GitHub:
- 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.GH_PACKAGES_TOKEN }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" `
-Source "${{ env.FEED_URL }}"
En Linux, debe mono
ejecutar nuget.exe
. Los ejecutores de Acciones de GitHub que usan Ubuntu vienen con mono
preinstalado. De lo contrario, puede instalar mono
mediante el administrador de paquetes del sistema de la distribución.
- 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.GH_PACKAGES_TOKEN }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \
-Source "${{ env.FEED_URL }}"
Es posible que tenga que reemplazar GH_PACKAGES_TOKEN
por el nombre de secreto correcto que proporcionó al PAT generado en el paso Proporcionar un token de acceso personal de GitHub.
Y listo. vcpkg cargará o restaurará paquetes desde la fuente de NuGet hospedada en paquetes de GitHub dentro del flujo de trabajo de Acciones de GitHub.
Pasos siguientes
Estas son otras tareas que se van a probar a continuación: