Partilhar via


Publicar pacotes NuGet com o Azure Pipelines (YAML/Classic)

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

O Azure Pipelines permite aos programadores publicar pacotes para feeds Azure Artifacts dentro da sua organização, para feeds noutras organizações e para registos públicos como o nuget.org. Este artigo explica como publicar pacotes NuGet tanto para feeds internos como externos usando pipelines Classic e YAML.

Pré-requisitos

Produto Requisitos
Azure DevOps - Uma organização de DevOps do Azure e um projeto.
- Um feed de Artefatos do Azure .
- Se estiver a usar um agente auto-hospedado, certifique-se de que tem o SDK .NET Core e o NuGet instalados.
- Permissões:
    - Para conceder acesso a todos os pipelines no projeto, você deve ser membro do grupo Administradores de Projeto.
    - Para criar conexões de serviço, você deve ter a função Administrador ou Criador para conexões de serviço .

Nota

Se estiveres a usar Ubuntu 24.04 ou posterior, deves usar a NuGetAuthenticate tarefa com a CLI .NET em vez de nuget.exe. Consulte Suporte para imagens hospedadas mais recentes do Ubuntu para obter mais detalhes.

Publicar pacotes NuGet em um feed na mesma organização

Se ainda não tiver um feed, pode criar um novo, caso contrário siga estes passos para publicar o seu pacote NuGet num feed dentro da mesma organização:

  1. Inicia sessão no teu Azure DevOps e depois navega até ao teu projeto.

  2. Selecione Pipelines e depois selecione a definição do pipeline.

  3. Selecione Editar, depois adicione o seguinte excerto ao seu pipeline YAML para autenticar e publicar o seu pacote:

    steps:
    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1                            # Authenticate with Azure Artifacts and other NuGet registries.
      displayName: 'NuGet Authenticate'
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push
    
  1. Inicia sessão no teu Azure DevOps e depois navega até ao teu projeto.

  2. Selecione Pipelines e depois selecione a definição do pipeline.

  3. Selecione Editar, depois adicione o seguinte excerto ao seu pipeline YAML para autenticar e publicar o seu pacote:

    steps:
    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      displayName: 'NuGet Authenticate'
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push
    

Nota

Para publicar pacotes num feed usando Azure Pipelines, certifique-se de que tanto o Project Collection Build Service como as identidades do Build Service do seu projeto têm atribuído o papel Editor de Feed (Contribuidor) nas definições do seu feed. Consulte Gerenciar permissões para obter mais detalhes.

Publicar pacotes NuGet em um feed em outra organização

Para publicar os seus pacotes NuGet num feed numa organização Azure DevOps diferente, deve primeiro criar um token de acesso pessoal (PAT) na organização alvo e, em seguida, criar uma ligação de serviço na organização onde o seu pipeline é executado. Pode então usar a ligação de serviço no seu pipeline YAML ou Classic para autenticar e publicar os seus pacotes.

1. Criar um token de acesso pessoal

  1. Inicie sessão na organização Azure DevOps que hospeda o seu feed de destino.

  2. Navegue até Definições de Utilizador>Tokens de acesso pessoal.

  3. Selecione Novo Token, forneça um nome descritivo e, em Scopes, selecione Packaging>Read & write.

  4. Selecione Criar quando terminar, depois copie e armazene o seu PAT num local seguro, pois vai precisar dele para configurar a ligação ao serviço a seguir.

2. Criar uma ligação de serviço

  1. Inicia sessão na organização Azure DevOps onde o teu pipeline irá correr e depois navega até ao teu projeto.

  2. Navegue até as configurações do Project Conexões> de serviço.

  3. Selecione Nova conexão de serviço, selecione NuGet e, em seguida, selecione Avançar.

  4. Selecione Servidor de DevOps do Azure Externo como o método de Autenticação e insira a URL do Feed de destino. Cole o Token de Acesso Pessoal criado anteriormente, forneça um nome para sua conexão de serviço e marque Conceder permissão de acesso a todos os pipelines , se aplicável ao seu cenário.

  5. Quando terminar, selecione Guardar.

    Uma captura de tela exibindo como configurar uma conexão de serviço NuGet para autenticar com um feed externo em uma organização diferente.

3. Publique o seu pacote

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

  2. Selecione Pipelines e, em seguida, selecione sua definição de pipeline.

  3. Selecione Editar, e depois adicione o seguinte excerto ao seu pipeline YAML para autenticar e publicar o seu pacote:

    - task: NuGetToolInstaller@1                                # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push       
    
  1. Entre em sua organização do Azure DevOps e navegue até seu projeto.

  2. Selecione Pipelines e, em seguida, selecione sua definição de pipeline.

  3. Selecione Editar e adicione o seguinte trecho ao seu pipeline YAML.

    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1                            # Authenticate with Azure Artifacts and other NuGet registries.
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>        # Name of the service connection used to authenticate with feeds across organizations or public registries.
    
    - script: |
        nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push          
    

Uma captura de tela exibindo o pacote publicado com êxito em um feed em uma organização diferente.