Compartir a través de


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.exea . 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.exea . 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.exea . 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: