.NET + NuGet: automatizando a publicação de packages com GitHub Actions

Renato Groffe
3 min readJan 23, 2021

--

O NuGet conta atualmente com centenas de milhares de packages, os quais considerados em conjunto atingem a marca de bilhões de downloads. Lá estão alternativas de bibliotecas voltadas à plataforma .NET cobrindo os mais variados cenários e compartilhadas pela Microsoft, outras empresas e até profissionais independentes (isoladamente ou, mesmo, formando iniciativas que reúnem diversos contribuidores).

Certamente o grande sucesso do NuGet se deve a incontáveis iniciativas open source existentes hoje dentro da comunidade .NET, muitas destas com o código-fonte hospedado em repositórios públicos no GitHub. Isso abre a possibilidade de utilização sem custos do GitHub Actions para automatizar o build e deployment de tais pacotes.

Neste artigo apresento um exemplo de workflow do GitHub Actions para a geração e publicação de packages NuGet, partindo para isto de uma Class Library criada com o .NET 5.

O código que define o workflow está na listagem a seguir:

Em que podemos observar:

  • O uso das Actions actions/checkout (que permite o acesso ao código-fonte) e actions/setup-dotnet (determinando a versão do .NET 5/.NET Core a ser empregada na execução do workflow);
  • O comando dotnet pack irá gerar um arquivo com a extensão .nupkg, já considerando para isso configurações de release (parâmetro -c) e direcionando o resultado correspondente para a pasta out;
  • Finalmente chegamos ao comando dotnet nuget push, no qual estão os parâmetros --api-key (com a chave para publicação no NuGet), --source (considerar o valor https://api.nuget.org/v3/index.json para disponibilizar pacotes de forma pública) e --skip-duplicate (não procederá com o lançamento de um erro caso já exista um package com o mesmo número de versão, muito embora não seja possível efetuar esta substituição).

Para gerar uma nova chave para publicação será necessária a criação de uma conta para utilização do NuGet. Acessar então no menu de usuário a opção API Keys:

Novas chaves contam com uma validade e permissões de acesso para publicação de pacotes:

Ajustes também serão necessários no projeto que servirá de base para a geração do package. É o que demonstra a próxima listagem (numa biblioteca para conversão de distâncias em milhas para Km):

Em que foram adicionados à seção PropertyGroup os itens PackageId, Version, Authors, Company, PackageTags e Description, necessárias para a documentação de um package distribuído via NuGet.

Este projeto foi disponibilizado no seguinte repositório do GitHub:

.NET 5 + Class Library + Configurações NuGet + Conversão de Distâncias

Todo o processo de geração e publicação de packages NuGet com este workflow foi detalhado recentemente em uma live recente do canal Coding Night. A gravação está disponível no YouTube e pode ser assistida gratuitamente:

E termino este post com um convite…

Que tal participar do treinamento online pioneiro no Brasil sobre GitHub Actions e promovido pelo Azure na Prática, agora com aulas gravadas e sessões ao vivo para resolução de dúvidas?

Acompanhe com comodidade e a qualquer tempo os diversos módulos deste treinamento, em que serão cobertas boas práticas + estratégias de build/testes/deployment e o uso desta solução de automação com tecnologias como Docker, Kubernetes, Azure App Service, Azure Functions e outros serviços da nuvem Microsoft!

Acesse então o link a seguir para efetuar sua inscrição com um desconto especial de R$ 100,00 (inclui certificado e grupo para resolução de dúvidas durante e após o curso):

https://bit.ly/anp-githubactions-desc-100-blog-groffe

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker