Esercitazione: Configurare una cache binaria vcpkg usando un feed NuGet
Nota
Questa esercitazione usa un feed NuGet ospitato in Azure Artifacts, ma le stesse istruzioni possono essere usate per altri provider di feed NuGet, ad esempio GitHub Packages, con alcune modifiche.
vcpkg supporta l'uso di feed di pacchetti NuGet per caricare e ripristinare i pacchetti binari in modo pratico.
I feed di pacchetti NuGet hanno funzionalità di controllo di accesso che li rendono ideali per limitare l'accesso alle risorse nell'organizzazione o nel gruppo di lavoro. I feed NuGet sono supportati da diversi provider di archiviazione cloud, ad esempio Azure Artifacts e registro pacchetti GitHub.
Questa esercitazione illustra come:
Prerequisiti
- Un terminale
- vcpkg
- Feed di pacchetti NuGet o, in caso contrario, un account Azure DevOps da seguire
- Un terminale
- vcpkg
- Feed di pacchetti NuGet o, in caso contrario, un account Azure DevOps da seguire
- Pacchetto
mono
installato nel sistema
1 - Configurare un feed NuGet
Ignorare questo passaggio se si dispone già di un feed di pacchetti NuGet esistente.
Seguire le istruzioni per configurare un feed NuGet di Azure Artifacts.
È anche possibile usare qualsiasi altro provider di feed di pacchetti NuGet di propria scelta.
2 - Aggiungere un'origine NuGet
Nota
In Linux è necessario mono
eseguire nuget.exe
. È possibile eseguire l'installazione mono
usando la gestione pacchetti di sistema della distribuzione.
vcpkg acquisisce la propria copia del nuget.exe
file eseguibile usato durante le operazioni di memorizzazione nella cache binaria. Questa esercitazione usa l'oggetto acquisito nuget.exe
da vcpkg. Il vcpkg fetch nuget
comando restituisce il percorso del vcpkg-acquired nuget.exe
, scaricando il file eseguibile, se necessario.
Eseguire il comando seguente per aggiungere il feed NuGet come origine, sostituire <feed name>
con qualsiasi nome scelto e <feed url>
con l'URL del feed NuGet.
.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>
Eseguire il comando seguente per recuperare il percorso dell'eseguibile NuGet:
vcpkg fetch nuget
Verrà fornito un output simile a C:\path\to\nuget.exe
. Prendere nota di questo percorso.
Usando il percorso ottenuto dal passaggio precedente, eseguire il comando seguente:
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>
Specificare una chiave API
Alcuni provider richiedono il push dei pacchetti NuGet nel feed usando una chiave API. Ad esempio, GitHub Packages richiede un token di accesso personale di GitHub come chiave API; se si usa Azure Artifacts, la chiave API è AzureDevOps
invece.
Usare il comando seguente per impostare la chiave API per tutti i pacchetti di cui è stato eseguito il push nel feed NuGet, sostituire <apiKey>
con la chiave API del feed.
.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>
Eseguire il comando seguente per recuperare il percorso dell'eseguibile NuGet:
vcpkg fetch nuget
Verrà fornito un output simile a C:\path\to\nuget.exe
. Prendere nota di questo percorso.
Usando il percorso ottenuto dal passaggio precedente, eseguire il comando seguente:
C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` setapikey <apiKey> -Source <feed url>
Specificare le credenziali di autenticazione
Il feed NuGet potrebbe richiedere l'autenticazione per consentire di scaricare e caricare pacchetti. In questo caso è possibile fornire le credenziali aggiungendole come parametri al nuget sources add
comando.
Ad esempio:
nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText
Per altre informazioni, alcuni provider come Azure Artifacts possono richiedere metodi di autenticazione diversi, vedere l'articolo Eseguire l'autenticazione nei feed NuGet privati.
Usare un nuget.config
file
In alternativa, è possibile usare un nuget.config
file per configurare le origini NuGet, seguendo il modello seguente:
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>
File nuget.config
di esempio:
<?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 richiede di impostare un nel defaultPushSource
nuget.config
file, usare l'URL del feed NuGet come origine predefinita per eseguire il push dei pacchetti binari.
Se si caricano i pacchetti in un feed NuGet di Azure Artifacts, usare AzureDevOps
come chiave API dell'origine eseguendo nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>
.
In caso contrario, sostituire il valore con la chiave API appropriata del feed, se disponibile.
Aggiungere l'origine <clear />
per ignorare altri valori configurati in precedenza. Se si vuole, è possibile definire più origini in questo file, usare una <add key="<feed name>" value="<feed url>" />
voce per ogni origine.
Eseguire il comando seguente per aggiungere un'origine NuGet usando un nuget.config
file, sostituire <path to nuget.config>
con il percorso del nuget.config
file:
.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>
Eseguire il comando seguente per recuperare il percorso dell'eseguibile NuGet:
vcpkg fetch nuget
Verrà fornito un output simile a C:\path\to\nuget.exe
. Prendere nota di questo percorso.
Usando il percorso ottenuto dal passaggio precedente, eseguire il comando seguente:
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 - Configurare vcpkg per l'uso del feed NuGet
Impostare la VCPKG_BINARY_SOURCES
variabile di ambiente come segue:
$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Se si usa un nuget.config
file, eseguire invece le operazioni seguenti:
$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set "VCPKG_BINARY_SOURCES=clear;nuget,<feed url>,readwrite"
Se si usa un nuget.config
file, eseguire invece le operazioni seguenti:
set "VCPKG_BINARY_SOURCES=clear;nugetconfig,<path to nuget.config>"
Nota
L'impostazione VCPKG_BINARY_SOURCES
tramite il export
comando influirà solo sulla sessione della shell corrente. Per rendere permanente questa modifica tra le sessioni, è necessario aggiungere il export
comando allo script del profilo della shell (ad esempio, ~/.bashrc
o ~/.zshrc
).
export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"
Se si usa un nuget.config
file, eseguire invece le operazioni seguenti:
export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
Ecco fatto. vcpkg caricherà o ripristinerà i pacchetti dal feed NuGet.
Passaggi successivi
Ecco altre attività da provare: