ASP.NET Core 3.1 — PKCE Component — NuGet Publish

Dando continuidade ao post ASP.NET Core 3.1 — PKCE Component, para não ficar tão extenso, neste vou explicar como fiz para publicar o componente no NuGet de forma automática (DevOps) usando as Actions do GitHub.

Publish NuGet Package Steps

Step 1

PS: Depois de criar a chave, fique atento à mensagem que avisa que você vai ter somente uma oportunidade de copiar a sua chave gerada, depois ela será omitida, se você perder este detalhe, vai ter que apagar e fazer novamente ou regerar a chave.

Step 2

Step 3

Encontre a opção de workflow conforme a imagem a seguir e clique em Set up this workflow.

Uma pasta com arquivos será criada no seu repositório, depois basta dar um pull para ter acesso localmente.

Eu criei o arquivo com o nome dotnet-core.yml e com o conteúdo a seguir.

O que é importante destacar sobre o arquivo acima:

  • on > release > types:[published]: o disparo do workflow de publicação ocorrerá quando uma nova release para o repositório for criado.
  • dotnet pack — /p:Version=${{ github.event.release.tagname }}: através do parâmetro *Version* é que a versão do pacote será gerado e servirá como referência na publicação e visualização no NuGet. A propriedade *tagname* é o campo tag version na criação da release conforme exibido na sequência de imagens a seguir que mostram a criação de uma nova release e sua respectiva versão.
  • working-directory: ./src/Extensions: durante o disparo do workflow eu estava tendo alguns erros, pois o dotnet pack não estava encontrando o csproj ou a solution para gerar o pacote, então tive que especificar qual o diretório/pasta onde o arquivo da solution estava.
  • run: dotnet nuget push */.nupkg — api-key ${{ secrets.NUGETAPIKEY }} — source https://api.nuget.org/v3/index.json — no-symbols true: por último, aqui eu utilizei a chave do NuGet que foi inserida como uma configuração secrets para o repositório com o nome NUGET_API_KEY.

Step 4

Eu acredito que todas as configurações do csproj estão bem claras, mas gostaria de destacar a questão da imagem, pois deu bastante trabalho para entender o funcionamento, pois uma configuração antiga entrou em deprecated recentemente e não pôde mais ser utilizada, então:

  • Criei a pasta Images e coloquei a imagem icon.png lá dentro e added an existing item no projeto.
  • <PackageIcon>icon.png</PackageIcon> especifiquei o nome da imagem

Step 5

Originally published at http://alextochetto.com on November 12, 2020.