Share via


Tutorial: Configurar um cache binário vcpkg usando um feed NuGet

Observação

Este tutorial usa um feed NuGet hospedado em Artefatos do Azure, mas as mesmas instruções podem ser usadas para outros provedores de feed NuGet, por exemplo: Pacotes GitHub, com algumas alterações.

vcpkg suporta o uso de feeds de pacotes NuGet para carregar e restaurar pacotes binários de uma maneira conveniente.

Os feeds de pacotes NuGet têm recursos de controle de acesso que os tornam ideais para limitar o acesso a recursos em toda a sua organização ou grupo de trabalho. Os feeds NuGet são suportados por vários provedores de armazenamento em nuvem, como o Azure Artifacts e o registro de pacotes do GitHub.

Neste tutorial, você aprenderá como:

Pré-requisitos

  • Um terminal
  • VCPKG
  • Um feed de pacotes NuGet ou, se você não tiver, uma conta do Azure DevOps para acompanhar
  • Um terminal
  • VCPKG
  • Um feed de pacotes NuGet ou, se você não tiver, uma conta do Azure DevOps para acompanhar
  • O mono pacote instalado no seu sistema

1 - Configurar um feed NuGet

Ignore esta etapa se você já tiver um feed de pacotes NuGet existente.

Siga as instruções para configurar um feed NuGet do Azure Artifacts.

Você também pode usar qualquer outro provedor de feed de pacotes NuGet de sua escolha.

2 - Adicionar uma fonte NuGet

Observação

No Linux você precisa mono executar nuget.exeo . Você pode instalar mono usando o gerenciador de pacotes do sistema da sua distribuição.

vcpkg adquire sua própria cópia do nuget.exe executável que ele usa durante operações de cache binário. Este tutorial usa o vcpkg adquirido nuget.exe. O vcpkg fetch nuget comando gera a localização do vcpkg adquirido nuget.exe, baixando o executável se necessário.

Execute o comando a seguir para adicionar seu feed NuGet como uma origem, substitua <feed name> por qualquer nome de sua escolha e <feed url> pela URL do seu feed NuGet.

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

Execute o comando abaixo para buscar o caminho para o executável NuGet:

vcpkg fetch nuget

Isso fornecerá uma saída que se parece com C:\path\to\nuget.exeo . Anote esse caminho. Usando o caminho obtido da etapa anterior, execute o seguinte 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>

Fornecer uma chave de API

Alguns provedores exigem que você envie seus pacotes NuGet para o feed usando uma chave de API. Por exemplo, os Pacotes do GitHub exigem um PAT (Token de Acesso Pessoal) do GitHub como chave da API; se você estiver usando Artefatos do Azure, a chave de API será AzureDevOps .

Use o comando a seguir para definir a chave de API para todos os pacotes enviados por push para o feed NuGet, substitua <apiKey> pela chave de API do feed.

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

Execute o comando abaixo para buscar o caminho para o executável NuGet:

vcpkg fetch nuget

Isso fornecerá uma saída que se parece com C:\path\to\nuget.exeo . Anote esse caminho. Usando o caminho obtido da etapa anterior, execute o seguinte comando:

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

Fornecer credenciais de autenticação

Seu feed NuGet pode exigir autenticação para permitir que você baixe e carregue pacotes. Se esse for o caso, você pode fornecer credenciais adicionando-as como parâmetros ao nuget sources add comando.

Por exemplo:

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

Alguns provedores, como o Azure Artifacts, podem exigir métodos de autenticação diferentes, leia o artigo Autenticar em feeds NuGet privados para saber mais.

Usar um nuget.config arquivo

Como alternativa, você pode usar um nuget.config arquivo para configurar seus códigos-fonte NuGet, seguindo o modelo abaixo:

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>

Exemplo de arquivo 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 requer que você defina um defaultPushSource em seu nuget.config arquivo, use a URL do seu feed NuGet como a fonte padrão para enviar pacotes binários.

Se você estiver carregando seus pacotes em um feed NuGet do Azure Artifacts, use AzureDevOps como chave de API da origem. Caso contrário, substitua o valor pela chave de API adequada do seu feed, se você tiver uma.

Adicione a <clear /> origem para ignorar outros valores configurados anteriormente. Se desejar, você pode definir várias fontes neste arquivo, use uma <add key="<feed name>" value="<feed url>" /> entrada para cada fonte.

Execute o seguinte comando para adicionar uma origem NuGet usando um nuget.config arquivo, substitua <path to nuget.config> pelo caminho para o nuget.config arquivo:

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

Execute o comando abaixo para buscar o caminho para o executável NuGet:

vcpkg fetch nuget

Isso fornecerá uma saída que se parece com C:\path\to\nuget.exeo . Anote esse caminho. Usando o caminho obtido da etapa anterior, execute o seguinte 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 - Configure vcpkg para usar seu feed NuGet

Defina a VCPKG_BINARY_SOURCES variável de ambiente da seguinte maneira:

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

Se você estiver usando um nuget.config arquivo, faça:

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

Se você estiver usando um nuget.config arquivo, faça:

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

Observação

A configuração VCPKG_BINARY_SOURCES usando o export comando afetará apenas a sessão do shell atual. Para tornar essa alteração permanente nas sessões, você precisará adicionar o export comando ao script de perfil do shell (por exemplo, ~/.bashrc ou ~/.zshrc).

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

Se você estiver usando um nuget.config arquivo, faça:

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

Pronto! O vcpkg agora carregará ou restaurará pacotes do seu feed NuGet.

Próximas etapas

Aqui estão outras tarefas para tentar em seguida: