Publicar pacotes NuGet na linha de comando (dotnet)

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Este guia explica como configurar seu projeto para publicar pacotes NuGet usando a interface de linha de comando dotnet.

Pré-requisitos

Produto Requisitos
Azure DevOps - Uma organização do Azure DevOps.
- Um projeto do Azure DevOps.
- Um feed do Azure Artifacts.
- Baixe e instale o SDK .NET versão 9.0.200 ou posterior.

Configurar o provedor de credenciais Azure Artifacts

Para autenticar com o feed, primeiro você deve instalar o provedor de credenciais Azure Artifacts. Usando o instalador de ferramentas incluído no dotnet, você pode instalar o provedor de credenciais da CLI usando o seguinte comando:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

Se o nuget.config no nível do repositório estiver configurado para usar apenas fontes do Azure Artifacts, execute o comando de instalação fora desse diretório ou defina explicitamente nuget.org como a origem:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

Opcionalmente, fixe a ferramenta em uma versão principal específica (por exemplo, em imagens de contêiner em que a reprodutibilidade é importante):

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

Primeiro uso

Na primeira vez que você executar uma operação que exija autenticação, use uma das seguintes abordagens:

  1. Execute o comando com --interactive para que dotnet possa solicitar que você faça login. Essa é a abordagem recomendada para a maioria dos cenários de desenvolvimento local.

Antes de executar um comando interativo, verifique se o projeto está configurado e se o feed é adicionado ao nuget.config. Para obter detalhes da instalação, consulte a configuração do projeto.

Depois que o projeto estiver configurado e conectado ao feed, navegue até o diretório do projeto e execute:

dotnet restore --interactive

Esse comando o inscreve e adquire um token de sessão. Após fazer login com sucesso, você poderá executar comandos autenticados sem --interactive enquanto o token de sessão em cache permanecer válido. Para obter mais informações, consulte Session token cache locations.

  1. Para cenários não interativos, como contêineres do Docker e automação personalizada, forneça credenciais por meio de variáveis environment.

Para Azure Pipelines, use a tarefa NuGetAuthenticate@1 para autenticar no feed antes de executar comandos como dotnet restore ou dotnet nuget push. Consulte Restaurar pacotes NuGet com o Azure Pipelines para obter mais detalhes.

Criar um feed

Se você já tem um feed, prossiga para o próximo passo. Caso contrário, siga as instruções abaixo para criar uma nova:

  1. Entre no Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione Criar Feed.

  3. Insira um nome descritivo para o feed e defina sua Visibilidade (quem pode usar o feed). Especifique o escopo do feed e, se desejar incluir pacotes de fontes públicas, marque a caixa de seleção Incluir pacotes de fontes públicas comuns .

  4. Selecione Criar quando terminar.

Conectar-se a um feed

Antes de publicar pacotes no feed, você deve se autenticar com o Azure Artifacts. Siga as instruções abaixo para configurar seu projeto e autenticar com o feed:

  1. Entre em sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed no menu suspenso.

  3. Selecione Conectar ao feed e, em seguida, selecione dotnet na seção NuGet à esquerda.

  4. Crie um arquivo nuget.config na mesma pasta que o arquivo csproj ou sln. Copie o seguinte snippet XML e cole-o em seu novo arquivo, substituindo os espaços reservados pelas informações relevantes:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
  </packageSources>
</configuration>
  1. Entre no servidor do Azure DevOps e navegue até o projeto.

  2. Selecione Artefatos e, em seguida, selecione o feed.

  3. Selecione Conectar ao Feed e selecione dotnet no painel de navegação esquerdo.

  4. Siga as instruções na seção Configuração do projeto para se conectar ao seu feed.

    Uma captura de tela mostrando como se conectar a um feed com dotnet no Azure DevOps Server 2020 e 2022.

Publicar pacotes em um feed na mesma organização

Execute o comando a seguir para publicar um pacote no feed. Substitua os marcadores pelos valores apropriados:

dotnet nuget push --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING> <PACKAGE_PATH> 

Exemplo:

dotnet nuget push --source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --api-key AZ bin/MyPackage.5.0.2.nupkg

Nota

O api-key parâmetro é necessário ao publicar em um feed do Azure Artifacts, mas você pode usar qualquer cadeia de caracteres como seu valor.

Publicar pacotes em um feed em uma organização diferente

Para publicar seus pacotes NuGet em um feed em uma organização diferente do Azure DevOps, primeiro você deve criar um PAT (token de acesso pessoal) na organização de destino, adicionar a nova origem do pacote ao arquivo de configuração e, em seguida, executar o comando de publicação:

  1. Navegue até a organização que hospeda seu feed de destino e crie um token de acesso pessoal (PAT) com escopo de Empacotamento>Leitura & gravação.

  2. Substitua o marcador de posição <PERSONAL_ACCESS_TOKEN> pelo seu token de acesso pessoal e execute o comando a seguir para adicionar a fonte do seu pacote ao arquivo nuget.config. Certifique-se de que esse arquivo esteja armazenado com segurança e não seja enviado para o controle do código-fonte.

    dotnet nuget add source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --name <SOURCE_NAME> --username <USER_NAME> --password <PERSONAL_ACCESS_TOKEN> --configfile <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Execute o seguinte comando para publicar seu pacote:

    dotnet nuget push --source <SOURCE_NAME> --api-key <ANY_STRING> <PACKAGE_PATH>
    

Exemplo:

dotnet nuget add source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json --name MySource --username MyUserName --password MyPersonalAccessToken --configfile ./nuget.config

dotnet nuget push --source MySource --api-key AZ nupkgs/mypackage.1.1.0.nupkg

Nota

Se sua organização usar um firewall ou servidor proxy, verifique se as URLs de domínio e endereços IP do Azure Artifacts são permitidas .