.NET + NuGet: automatizando a publicação de packages com GitHub Actions
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):