Partager via


Tutoriel : Configurer un cache binaire vcpkg à l’aide d’un flux NuGet

Remarque

Ce tutoriel utilise un flux NuGet hébergé dans Azure Artifacts, mais les mêmes instructions peuvent être utilisées pour d’autres fournisseurs de flux NuGet, par exemple : Packages GitHub, avec quelques modifications.

vcpkg prend en charge l’utilisation des flux de package NuGet pour charger et restaurer des packages binaires de manière pratique.

Les flux de package NuGet ont des fonctionnalités de contrôle d’accès qui les rendent idéales pour limiter l’accès aux ressources au sein de votre organisation ou groupe de travail. Les flux NuGet sont pris en charge par plusieurs fournisseurs de stockage cloud, tels que Azure Artifacts et le registre de packages GitHub.

Ce didacticiel vous montre comment effectuer les opérations suivantes :

Prérequis

  • Un terminal
  • vcpkg
  • Un flux de packages NuGet ou, si ce n’est pas le cas, un compte Azure DevOps à suivre
  • Un terminal
  • vcpkg
  • Un flux de packages NuGet ou, si ce n’est pas le cas, un compte Azure DevOps à suivre
  • Package mono installé dans votre système

1 - Configurer un flux NuGet

Ignorez cette étape si vous disposez déjà d’un flux de packages NuGet existant.

Suivez les instructions pour configurer un flux NuGet Azure Artifacts.

Vous pouvez également utiliser n’importe quel autre fournisseur de flux de packages NuGet de votre choix.

2 - Ajouter une source NuGet

Remarque

Sur Linux, vous devez mono exécuter nuget.exe. Vous pouvez installer mono à l’aide du gestionnaire de package système de votre distribution.

vcpkg acquiert sa propre copie de l’exécutable nuget.exe qu’il utilise pendant les opérations de mise en cache binaire. Ce tutoriel utilise le vcpkg-acquire nuget.exe. La vcpkg fetch nuget commande génère l’emplacement du vcpkg-acquis nuget.exe, en téléchargeant l’exécutable si nécessaire.

Exécutez la commande suivante pour ajouter votre flux NuGet en tant que source, remplacez <feed name> par n’importe quel nom de votre choix et <feed url> par l’URL de votre flux NuGet.

.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>

Exécutez la commande ci-dessous pour récupérer le chemin d’accès à l’exécutable NuGet :

vcpkg fetch nuget

Cela fournit une sortie qui ressemble à C:\path\to\nuget.exequelque chose. Notez ce chemin. À l’aide du chemin obtenu à l’étape précédente, exécutez la commande suivante :

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>

Fournir une clé API

Certains fournisseurs nécessitent que vous envoyiez vos packages NuGet au flux à l’aide d’une clé API. Par exemple, les packages GitHub nécessitent un pat GitHub (jeton d’accès personnel) comme clé API ; si vous utilisez Azure Artifacts, la clé API est AzureDevOps à la place.

Utilisez la commande suivante pour définir la clé API pour tous les packages envoyés (push) à votre flux NuGet, remplacez <apiKey> par la clé API de votre flux.

.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>

Exécutez la commande ci-dessous pour récupérer le chemin d’accès à l’exécutable NuGet :

vcpkg fetch nuget

Cela fournit une sortie qui ressemble à C:\path\to\nuget.exequelque chose. Notez ce chemin. À l’aide du chemin obtenu à l’étape précédente, exécutez la commande suivante :

C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources setapikey <apiKey> - Source <feed url>

Fournir des informations d’authentification

Votre flux NuGet peut nécessiter une authentification pour vous permettre de télécharger et de charger des packages. Si c’est le cas, vous pouvez fournir des informations d’identification en les ajoutant en tant que paramètres à la nuget sources add commande.

Par exemple :

nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText

Certains fournisseurs comme Azure Artifacts peuvent nécessiter différentes méthodes d’authentification, lisez l’article s’authentifier auprès des flux NuGet privés pour en savoir plus.

Utiliser un nuget.config fichier

Vous pouvez également utiliser un nuget.config fichier pour configurer vos sources NuGet, en suivant le modèle ci-dessous :

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>

Exemple de fichier nuget.config :

<?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 nécessite que vous définissiez un defaultPushSource fichier nuget.config , utilisez l’URL de votre flux NuGet comme source par défaut pour envoyer (push) des packages binaires.

Si vous chargez vos packages dans un flux NuGet Azure Artifacts, utilisez AzureDevOps la clé API de votre source. Sinon, remplacez la valeur par la clé API appropriée de votre flux si vous en avez un.

Ajoutez la <clear /> source pour ignorer d’autres valeurs précédemment configurées. Si vous le souhaitez, vous pouvez définir plusieurs sources dans ce fichier, utiliser une <add key="<feed name>" value="<feed url>" /> entrée pour chaque source.

Exécutez la commande suivante pour ajouter une source NuGet à l’aide d’un nuget.config fichier, remplacez <path to nuget.config> par le chemin d’accès à votre nuget.config fichier :

.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>

Exécutez la commande ci-dessous pour récupérer le chemin d’accès à l’exécutable NuGet :

vcpkg fetch nuget

Cela fournit une sortie qui ressemble à C:\path\to\nuget.exequelque chose. Notez ce chemin. À l’aide du chemin obtenu à l’étape précédente, exécutez la commande suivante :

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 - Configurer vcpkg pour utiliser votre flux NuGet

Définissez la variable d’environnement VCPKG_BINARY_SOURCES comme suit :

$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Si vous utilisez un nuget.config fichier, procédez plutôt comme suit :

$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Si vous utilisez un nuget.config fichier, procédez plutôt comme suit :

set VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

Remarque

La définition VCPKG_BINARY_SOURCES à l’aide de la export commande affecte uniquement la session shell active. Pour rendre cette modification permanente entre les sessions, vous devez ajouter la export commande au script de profil de votre interpréteur de commandes (par exemple, ~/.bashrc ou ~/.zshrc).

export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

Si vous utilisez un nuget.config fichier, procédez plutôt comme suit :

export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

C’est tout ! vcpkg charge ou restaure désormais des packages à partir de votre flux NuGet.

Étapes suivantes

Voici d’autres tâches à essayer ensuite :