Tutorial: Configuración de una caché binaria de vcpkg mediante una fuente NuGet
Nota:
En este tutorial se usa una fuente de NuGet hospedada en Azure Artifacts, pero se pueden usar las mismas instrucciones para otros proveedores de fuentes nuGet, por ejemplo: Paquetes de GitHub, con algunos cambios.
vcpkg admite el uso de fuentes de paquetes NuGet para cargar y restaurar paquetes binarios de una manera cómoda.
Las fuentes de paquetes NuGet tienen funcionalidades de control de acceso que hacen que sean ideales para limitar el acceso a los recursos en toda la organización o grupo de trabajo. Varias fuentes de NuGet son compatibles con varios proveedores de almacenamiento en la nube, como Azure Artifacts y el registro de paquetes de GitHub.
En este tutorial, aprenderá a:
Requisitos previos
- Un terminal
- vcpkg
- Una fuente de paquetes NuGet o, si no lo hace, una cuenta de Azure DevOps que debe seguir
- Un terminal
- vcpkg
- Una fuente de paquetes NuGet o, si no lo hace, una cuenta de Azure DevOps que debe seguir
- El
mono
paquete instalado en el sistema
1- Configuración de una fuente nuGet
Omita este paso si ya tiene una fuente de paquetes NuGet existente.
Siga las instrucciones para configurar una fuente NuGet de Azure Artifacts.
También puede usar cualquier otro proveedor de fuentes de paquetes NuGet que prefiera.
2- Adición de un origen de NuGet
Nota:
En Linux, debe mono
ejecutar nuget.exe
. Puede instalar mono
mediante el administrador de paquetes del sistema de la distribución.
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
. El vcpkg fetch nuget
comando genera la ubicación del archivo vcpkg-adquirido nuget.exe
, descargando el archivo ejecutable si es necesario.
Ejecute el siguiente comando para agregar la fuente de NuGet como origen, reemplace por <feed name>
cualquier nombre de su elección y <feed url>
por la dirección URL a la fuente de NuGet.
.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>
Ejecute el comando siguiente para capturar la ruta de acceso al archivo ejecutable de NuGet:
vcpkg fetch nuget
Esto proporcionará una salida que tenga un aspecto similar C:\path\to\nuget.exe
a . Tome nota de esta ruta de acceso.
Con la ruta de acceso obtenida del paso anterior, ejecute el siguiente comando:
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>
Proporcionar una clave de API
Algunos proveedores requieren que inserte los paquetes NuGet en la fuente mediante una clave de API. Por ejemplo, Los paquetes de GitHub requieren un PAT de GitHub (token de acceso personal) como clave de API; Si usa Azure Artifacts, la clave de API es AzureDevOps
en su lugar.
Use el siguiente comando para establecer la clave de API para todos los paquetes insertados en la fuente de NuGet, reemplace por <apiKey>
la clave de API de la fuente.
.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>
Ejecute el comando siguiente para capturar la ruta de acceso al archivo ejecutable de NuGet:
vcpkg fetch nuget
Esto proporcionará una salida que tenga un aspecto similar C:\path\to\nuget.exe
a . Tome nota de esta ruta de acceso.
Con la ruta de acceso obtenida del paso anterior, ejecute el siguiente comando:
C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>
Proporcionar credenciales de autenticación
La fuente de NuGet puede requerir autenticación para permitirle descargar y cargar paquetes. Si es así, puede proporcionar credenciales agregándolas como parámetros al nuget sources add
comando.
Por ejemplo:
nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText
Algunos proveedores como Azure Artifacts pueden requerir distintos métodos de autenticación, lea el artículo Autenticación en fuentes de NuGet privadas para obtener más información.
Uso de un nuget.config
archivo
Como alternativa, puede usar un nuget.config
archivo para configurar los orígenes de NuGet, siguiendo la plantilla siguiente:
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>
Archivo nuget.config
de ejemplo:
<?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 requiere que establezca un defaultPushSource
elemento en el nuget.config
archivo, use la dirección URL de la fuente nuGet como origen predeterminado para insertar paquetes binarios.
Si va a cargar los paquetes en una fuente NuGet de Azure Artifacts, use AzureDevOps
como clave de API del origen mediante la ejecución nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>
de .
De lo contrario, reemplace el valor por la clave de API adecuada de la fuente si tiene una.
Agregue el <clear />
origen para omitir otros valores configurados anteriormente. Si lo desea, puede definir varios orígenes en este archivo, use una <add key="<feed name>" value="<feed url>" />
entrada para cada origen.
Ejecute el siguiente comando para agregar un origen de NuGet mediante un nuget.config
archivo y reemplace por <path to nuget.config>
la ruta de acceso al nuget.config
archivo:
.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>
Ejecute el comando siguiente para capturar la ruta de acceso al archivo ejecutable de NuGet:
vcpkg fetch nuget
Esto proporcionará una salida que tenga un aspecto similar C:\path\to\nuget.exe
a . Tome nota de esta ruta de acceso.
Con la ruta de acceso obtenida del paso anterior, ejecute el siguiente comando:
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- Configuración de vcpkg para usar la fuente de NuGet
Establezca la variable de entorno de la VCPKG_BINARY_SOURCES
siguiente manera:
$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Si usa un nuget.config
archivo, haga lo siguiente:
$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"
Si usa un nuget.config
archivo, haga lo siguiente:
set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"
Nota:
La configuración VCPKG_BINARY_SOURCES
mediante el export
comando solo afectará a la sesión de shell actual. Para que este cambio sea permanente entre sesiones, deberá agregar el export
comando al script de perfil del shell (por ejemplo, ~/.bashrc
o ~/.zshrc
).
export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Si usa un nuget.config
archivo, haga lo siguiente:
export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
Y listo. vcpkg ahora cargará o restaurará paquetes desde la fuente de NuGet.
Pasos siguientes
Estas son otras tareas que se van a probar a continuación:
- Cambiar la ubicación predeterminada de la caché binaria
- Configuración de una caché binaria local
- Configuración de una caché binaria en el flujo de trabajo de Acciones de GitHub mediante paquetes de GitHub
- Configuración de una caché binaria en el flujo de trabajo de Acciones de GitHub mediante la caché de acciones de GitHub