Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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: Configuración de la autenticación para paquetes de GitHub
En este tutorial se usa el elemento GITHUB_TOKEN integrado proporcionado por Acciones de GitHub. Para habilitar el acceso de lectura y escritura a paquetes de GitHub, agregue el siguiente permissions bloque al flujo de trabajo:
permissions:
packages: write
Esto concede los GITHUB_TOKEN permisos y packages:write necesariospackages:read.
El uso GITHUB_TOKEN de tiene varias ventajas:
- No es necesario crear ni administrar secretos adicionales
- Funciona automáticamente para las solicitudes de incorporación de cambios de bifurcaciones (con acceso de solo lectura)
- Ámbito de la ejecución específica del repositorio y del flujo de trabajo
Nota:
Como alternativa, puede usar un token de acceso personal (PAT) clásico si necesita acceso entre repositorios u otros escenarios avanzados. Siga las instrucciones de GitHub para generar un token de acceso personal (PAT) clásico con packages:write permisos y packages:read , a continuación, agréguelo como secreto en el repositorio y úselo ${{ secrets.YOUR_PAT_NAME }} en lugar de ${{ secrets.GITHUB_TOKEN }} en los ejemplos siguientes.
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 siguiente paso al archivo de flujo de trabajo para configurar el origen de NuGet con 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 }}"
En Linux, debe mono ejecutar nuget.exe. Puede instalar mono mediante el administrador de paquetes del sistema de la distribución:
apt install mono-complete
Tenga en cuenta que ubuntu-22.04 los ejecutores de Acciones de GitHub vienen con mono preinstalados, pero a partir ubuntu-24.04 de (que ubuntu-latest actualmente apunta a), mono ya no viene preinstalado.
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 }}"
Nota:
El valor predeterminado GITHUB_TOKEN proporcionado por Acciones de GitHub no tiene los permisos necesarios para cargar o descargar paquetes almacenados en caché.
Para habilitar el almacenamiento en caché de paquetes en Paquetes de GitHub, use un token de acceso personal (PAT) en su lugar y asegúrese de que incluye los siguientes ámbitos:
packages:readpackages:write
Almacene el PAT como un secreto de repositorio (por ejemplo, VCPKG_PAT_TOKEN) y haga referencia a él en el flujo de trabajo:
-Password: "${{ secrets.VCPKG_PAT_TOKEN }}"
-Source: "${{ env.FEED_URL }}"
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: