Compartilhando pacotes de forma privada com o Azure Artifacts


Como plataforma de gerenciamento de ciclo de vida de aplicações, era de se esperar uma ferramenta que nos possibilitasse o gerenciamento de pacotes NuGet, NPM, Maven e Python utilizando o Azure Artifacts.

Com o Azure Artifacts, é possível gerenciar, organizar, proteger e integrá-lo ao processo de CI/CD, e tudo isso sem a necessidade de uma infra local.

O Azure Artifacts vem instalado por padrão no Azure DevOps Services, no Azure DevOps Server 2019 e no Team Foundation Server (TFS) 2017 e 2018.

Em suas versões anteriores, era possível criar somente feeds privados, ou seja, os pacotes gerenciados pelo Azure Artifacts só poderiam ficar disponíveis em nível de organização, porém, com os inúmeros feedbacks e as solicitações dos usuários, o time de produto lançou a possibilidade de compartilhar os pacotes de forma pública, sem a necessidade de autenticação.

 

Criando um feed privado

Para iniciar nosso tutorial, abriremos o Azure DevOps e acessaremos o recurso Azure Artifacts, como você pode ver na imagem a seguir.

Obs.: caso o recurso não esteja disponível no menu lateral, será necessário habilitá-lo dentro das configurações do seu projeto, conforme imagens a seguir.

Uma vez dentro do Azure Artifacts, criaremos nosso primeiro feed; para este tutorial, utilizaremos um feed privado para pacotes NuGet.

Como você pode ver na imagem a seguir, o primeiro passo é colocar um nome e escolher as opções de visibilidade e o formato de hospedagem dos pacotes.

 

Visibilidade

  1. People in… — Disponível para todos os membros do seu time.
  2. Specific people — Disponível somente para usuários que forem especificados no ambiente de permissionamento.

 

Formato de hospedagem

  1. Use packages from public sources through this feed — Com essa opção ativada, você está permitindo que o Azure Artifacts crie uma cópia de todos os pacotes no seu feed, ou seja, com isso você ganha alguns benefícios, como simplicidade e fácil gerenciamento dos seus feeds, centralizando-os em único ambiente.
  2. Only use packages published this feed — Essa opção apenas permitirá os pacotes que foram criados por você, ou seja, ele não fará uma cópia dos pacotes de fonte públicas, como o Newtonsoft ou o EntityFramework.

 

Uma vez que nosso feed foi criado, agora podemos conectá-lo ao nosso Visual Studio (para este tutorial, utilizaremos a versão 2019).

Antes de abrir as configurações do Visual Studio, obteremos o link de acesso ao nosso feed, conforme as imagens 5 e 6.

Uma vez com o Visual Studio aberto, configuraremos um Package Source ou uma nova Fonte de Pacotes NuGet. Para isso, acesse as configurações de ferramentas por meio do menu Tools > Options > NuGet Package Manager, conforme imagem 7.

Perceba, na imagem anterior, que temos somente um feed (o feed padrão que já vem apontado para o nuget.org) e é nesse ponto que registraremos o feed privado que acabamos de criar no portal do Azure DevOps. Para isso, clicaremos no botão + (mais) e alteraremos o nome do feed com a nova URL que foi obtida nas imagens 5 e 6.

Para visualizar o novo feed configurado no Visual Studio, abriremos o gerenciamento de dependências de um projeto qualquer.

Como nosso feed não tem nenhum pacote publicado, ele ficará vazio. Caso você procure por alguma informação, nesse caso, criaremos um pacote de exemplos para conseguirmos onsumir no Visual Studio.

 

Criando e publicando um pacote

Para publicar um pacote em nosso feed privado, criaremos um projeto do tipo Class Library somente para exemplificar, conforme imagem 11.

Uma vez criado nosso projeto, iremos empacotá-lo para que possamos publicá-lo em nosso feed utilizando os seguintes comandos:

 

  1. dotnet build — Compila a aplicação;
  2. dotnet pack — Empacota o projeto em um arquivo do tipo nupkg.

Uma vez nosso projeto empacotado, utilizaremos o seguinte comando para publicá-lo dentro do Azure Artifacts:

 

nuget push -Source “{URL DO FEED QUE CRIAMOS}” -ApiKey {NOME DO ARQUIVO JÁ EMPACOTADO.nupkg}

 

Uma vez executando o comando anterior, será necessário inserir as credenciais de acesso ao Azure DevOps (uma janela abrirá). Lembrando que esse projeto é privado, ou seja, está disponível apenas para os membros da sua equipe.

Agora que temos um pacote já publicado no feed do Azure Artifacts (imagem 13), podemos consumi-lo tranquilamente no gerenciador de dependências do Visual Studio (imagem 16); para isso, será necessário promovê-lo para pré-release ou release (imagens 14 e 15).

Perceba, na imagem anterior, que temos o pacote disponível no gerenciador de dependências do Visual Studio de forma simples e rápida e ainda não dependendo de uma infra local para gerenciar todas essas bibliotecas.

Lembrando que podemos ir mais além ainda, como integrar o Azure Artifacts ao Pipeline de Integração Contínua, criar um feed público e deixá-lo disponível para qualquer um acessá-lo.

 

Fique por dentro de todas as novidades do Azure DevOps, por meio do Azure DevOps Blog:

 

Referências:

Azure DevOps Service | Microsoft Azure

Azure Artifacts | Microsoft Azure

Azure DevOps Blog


Autor:

Microsoft MVP, Microsoft Certified Professional (MCP), Microsoft Certified Solution Associate (MCSA), Coordenador de Comunidade (DevOps Professionals - +2K membros) e Palestrante em diversas comunidade técnicas, Autor Técnico, Analista de Sistemas corporativos com mais de 10 anos de experiência profissional, incluindo 7 anos em análise e desenvolvimento de softwares para o setor de turismo focado no segmento de aluguel de carros.