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 package NuGet ou, si ce n’est pas le cas, un compte Azure DevOps à suivre
- Un terminal
- vcpkg
- Un flux de package 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.exe
quelque 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.exe
quelque 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` 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 en exécutant nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>
.
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.exe
quelque 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 :