AutoRelease 0.6.0
See the version list below for details.
dotnet tool install --global AutoRelease --version 0.6.0
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local AutoRelease --version 0.6.0
#tool dotnet:?package=AutoRelease&version=0.6.0
nuke :add-package AutoRelease --version 0.6.0
Auto Release
Gere automaticamente releases do seu projeto no GitHub usando o Auto Release.
Começando
Use o sumário abaixo para escolher como quer aprender a usar o Auto Release.
- GitHub Actions - Automatize a criação dos seus releases com o CI/CD do GitHub.
- CLI (Interface de Linha de Comando) - Crie os seus releases a partir do seu terminal.
Depois, veja como escrever as suas mensagens de commit para usar todo o potencial do Auto Release clicando aqui.
Índice
- Auto Release
GitHub Actions
Para começar a usar o Auto Release no GitHub Actions é muito fácil, siga os passos abaixo e diga adeus a escrever releases manualmente.
Criando um fluxo de trabalho simples no GitHub Actions
Acesse o seu repositório no GitHub e no menu suspenso "Add file", vá em "Create new file".
Em "Name your file..." digite o seguinte: .github/workflows/main.yml
.
Ficará semelhante a imagem abaixo:
Copie o código abaixo e cole no corpo do arquivo no GitHub.
# .github/workflows/main.yml
name: Criar Release
on:
push:
branches:
- main
jobs:
create-release:
name: Criar Release
runs-on: ubuntu-latest
permissions: write-all
steps:
- name: Criar Release
uses: kempdec/autorelease-action@v1
env:
AutoRelease_Token: ${{ secrets.GITHUB_TOKEN }} # Este token é fornecido pelo GitHub Actions, você não precisa criar seu próprio token.
Clique no botão "Commit changes".
Escreva a sua mensagem de commit e clique mais uma vez em "Commit changes".
Pronto! Isso já é o suficiente para que o Auto Release comece a gerar automaticamente os releases do seu repositório no GitHub. Toda vez que um push
for feito para o branch main
, um release será criado.
Veja como configurar e costumizar o Auto Release para que atenda melhor as suas necessidades e da sua equipe clicando aqui.
Personalizando o fluxo de trabalho
Caso você queira disparar a ação de criação da release manualmente, troque o conteúdo de on: push
para on: workflow_dispatch
.
# .github/workflows/main.yml
name: Criar Release
on:
workflow_dispatch:
jobs:
create-release:
name: Criar Release
runs-on: ubuntu-latest
permissions: write-all
steps:
- name: Criar Release
uses: kempdec/autorelease-action@v1
env:
AutoRelease_Token: ${{ secrets.GITHUB_TOKEN }} # Este token é fornecido pelo GitHub Actions, você não precisa criar seu próprio token.
Ou se preferir, o release pode ser criado quando você fizer o push
de uma tag
de versão para o repositório. Nesse caso troque o conteúdo de on: push: branches
para on: push: tags
e adicione a variável de ambiente AutoRelease_Version
.
# .github/workflows/main.yml
name: Criar Release
on:
push:
tags:
- "v*" # Tags que iniciarem com v, como v1.0.0, v2.3.5-beta.1.
jobs:
create-release:
name: Criar Release
runs-on: ubuntu-latest
permissions: write-all
steps:
- name: Criar Release
uses: kempdec/autorelease-action@v1
env:
AutoRelease_Token: ${{ secrets.GITHUB_TOKEN }} # Este token é fornecido pelo GitHub Actions, você não precisa criar seu próprio token.
AutoRelease_Version: ${{ github.ref_name }}
CLI (Interface de Linha de Comando)
Instalação
Instale a ferramenta a partir do SDK do .NET.
dotnet tool install -g autorelease
Digite o comando autorelease --help
em seu Terminal para que seja impresso a ajuda.
Para imprimir a ajuda de algum comando, informe ele e em seguida a opção --help
.
Exemplo: autorelease create --help
.
A CLI também funciona com um arquivo de configuração do Auto Release. Nos exemplos acima, o arquivo deveria estar em C:\Users\ceo
, que é o caminho em que o terminal se encontra.
Veja como usar um arquivo de configuração clicando aqui.
Escrevendo commits
O Auto Release usa o padrão do Conventional Commits (com poucas diferenças) para ler os commits e gerar o release automaticamente.
Ou seja, a mensagem do commit deve ser estruturada da seguinte forma:
Obs.: O Auto Release ainda não oferece suporte a escopos opcionais, mas em breve será adicionado o recurso.
<tipo>: <descrição>
[corpo opcional]
[rodapé(s) opcional(is)]
Os tipos feat
e fix
, operador !
, e o texto BREAKING CHANGE:
funcionam como está descrito em Conventional Commits, com as seguintes diferenças:
Caso a propriedade
Types
(arquivo) outypes
(CLI) seja especificada, o primeiro tipo terá o funcionamento defeat
, de incrementar a versãominor
e todos os demais tipos incrementarão a versãopatch
.O texto
BREAKING CHANGE:
pode ser colocado em qualquer lugar do corpo ou rodapé, não sendo necessário estar no início do texto. Apenas se atente ao uso de:
(2 pontos), oBREAKING CHANGE:
sem os 2 pontos, não será considerado.Caso o corpo ou rodapé da mensagem de commit for especificado, somente eles serão utilizados nas notas geradas pelo Auto Release.
Exemplo da mensagem de commit:
fix: Corrigir a criação de artigos. Corrigido um problema em que quando a data de publicação era inferior a data de criação, o artigo não era criado. Obs.: Somente de exemplo.
As notas geradas serão semelhantes a abaixo:
# My Project v1.0.0 (2024-01-01) # Correções - Corrigido um problema em que quando a data de publicação era inferior a data de criação, o artigo não era criado. Obs.: Somente de exemplo.
Configurações
Arquivo de configuração
Uma das maneiras de configurar o Auto Release, é adicionando um arquivo com o nome autorelease.config.json
na raiz do seu projeto.
Exemplo: Se o seu projeto está em
D:/MeuProjeto
, é nela que o arquivo deverá ser criado.
Um modelo atualizado com todas as opções do autorelease.config.json
pode ser encontrado clicando aqui.
Observações:
- Todas as propriedades de configuração são OPCIONAIS.
- A configuração abaixo é apenas um exemplo e NÃO deve ser usada em seu projeto, a menos que entenda o que está fazendo.
- Caso você esteja utilizando o Auto Release no GitHub Actions, as propriedades
NoteCommand
eVersionCommand
devem ser ignoradas.
// autorelease.config.json
{
// O token para acesso ao repositório no GitHub.
"Token": "ghp_1DF8350tVc1Ry0IBuWH3uh8cTRpofs0FY0Iv",
// O repositório que contém os commits no GitHub.
"Repo": "kempdec/MyRepository",
// O branch do repositório no GitHub.
"Branch": "main",
// As configurações do subcomando de criação automática de um release.
"CreateCommand": {
// A versão do release.
// No exemplo abaixo, o release seria criado na v1.3.0. O uso dela é recomendado somente de forma dinâmica, como em
// uma variável de ambiente definida pelo GitHub Actions.
"Version": "v1.3.0",
// O nome do projeto.
// Ele pode ser utilizado em alguns lugares, como parte do título do release.
"ProjectName": "Meu Repositório",
// Um sinalizador indicando se o release é um rascunho.
"Draft": false,
// Um sinalizador indicando se o release é um pre-release.
"PreRelease": false,
// O tipo de saída da criação automática do release.
// Algumas opções são: Id, UploadUrl e Version.
"OutputType": "Id",
// Os tipos das mensagens de commit.
"Types": [
"feat=Novidades desta versão",
"fix=Principais correções desta versão",
"chore=Notas técnicas"
],
// As substituições do início das mensagens de commit.
"Replaces": {
"Adicionar": "Foi adicionado",
"Adicionar o ": "Foi adicionado o ",
"Adicionar a ": "Foi adicionada a ",
"Corrigir": "Corrigido um problema em que"
},
// Os inícios das mensagens de commit que serão ignoradas.
"Ignores": [
"Refatorar."
],
// A primeira versão do repositório.
"FirstVersion": "0.1.0",
// O prefixo das versões do repositório.
"VersionPrefix": "v"
},
// As configurações do subcomando de geração automática das notas do release.
"NoteCommand": {
// Os tipos das mensagens de commit.
"Types": [
"feat=Novidades desta versão",
"fix=Principais correções desta versão"
],
// As substituições do início das mensagens de commit.
"Replaces": null,
// Os inícios das mensagens de commit que serão ignoradas.
"Ignores": [
"Refatorar."
]
},
// As configurações do subcomando de geração automática da versão do release.
"VersionCommand": {
// A primeira versão do repositório.
"FirstVersion": "0.1.0",
// O prefixo das versões do repositório.
"VersionPrefix": null
}
}
Variáveis de ambiente
Você pode definir variáveis de ambiente com o prefixo AutoRelease_
para configurar o Auto Release.
Para configurar o repositório, por exemplo, o nome da variável de ambiente seria AutoRelease_Repo
.
// Essa variável de ambiente:
AutoRelease_Repo="kempdec/MyRepository"
// É equivalente a essa propriedade no arquivo de configuração:
{
"Repo": "kempdec/MyRepository"
}
Use __
(dois _
) no nome da variável de ambiente para definir uma propriedade de um objeto.
// Essa variável de ambiente:
AutoRelease_CreateCommand__Types="feat=\"Novidades\" fix=\"Correções\" chore=\"Notas técnicas\""
// É equivalente a essa propriedade no arquivo de configuração:
{
"CreateCommand": {
"Types": [
"types=Novidades",
"fix=Correções",
"chore=Notas técnicas"
]
}
}
Propriedades de configuração
Arquivo | CLI | Tipo | Padrão | Sumário |
---|---|---|---|---|
Token |
token |
string |
null! |
[OBRIGATÓRIA NO CLI] <br>O token para acesso ao repositório no GitHub.<br>Exemplo: ghp_1DF8350tVc1Ry0IBuWH3uh8cTRpofs0FY0Iv . |
Repo |
repo |
string |
null! |
[OBRIGATÓRIA NO CLI] <br>O repositório que contém os commits no GitHub.<br>Exemplo: kempdec/MyRepository . |
Branch |
branch |
string? |
null |
O branch do repositório no GitHub.<br>Exemplo: main . |
CreateComand
Arquivo | CLI | Tipo | Padrão | Sumário |
---|---|---|---|---|
Version |
version |
string? |
null |
A versão do release (SemVer 2.0).<br>Quando especificada, a versão do release não será gerada automaticamente. O uso dessa propriedade é recomendado somente de forma dinâmica, como em uma variável de ambiente definida através do GitHub Actions.<br>Exemplo: 1.3.0 . |
ProjectName |
project-name |
string? |
null |
O nome do projeto.<br>Ele pode ser utilizado em alguns lugares, como parte do título do release.<br>Exemplo: Meu Repositório . |
Draft |
draft |
boolean |
false |
Um sinalizador indicando se o release é um rascunho.<br>Exemplo: false . |
PreRelease |
pre-release |
boolean |
false |
Um sinalizador indicando se o release é um pre-release.<br>Exemplo: false . |
OutputType |
output-type |
string |
Id |
O tipo de saída da criação automática do release.<br>Os valores aceitos são: Id , UploadUrl ou Version |
CreateComand e NoteCommand
Arquivo | CLI | Tipo | Padrão | Sumário |
---|---|---|---|---|
Types |
types |
string[] |
null |
Os tipos das mensagens de commit.<br><br>Exemplo arquivo:<br>["feat=Novidades", "fix=Correções", "chore=Notas técnicas"] .<br><br>Exemplo CLI:<br>feat="Novidades" fix="Correções" chore="Notas técnicas" .<br><br>A ordem dos tipos definirá também a ordem que são escritos nas notas do release. Neste exemplo, as Novidades serão listadas primeiro. |
Replaces |
replaces |
object |
null |
As substituições do início das mensagens de commit.<br><br>Exemplo arquivo:<br>{"Adicionar a ": "Foi adicionada a ", "Corrigir": "Foi corrigido"} .<br><br>Exemplo CLI:<br>"Adicionar a "="Foi adicionada a " "Corrigir"="Foi corrigido" .<br><br>Usando a seguinte mensagem de commit como exemplo:<br>feat: Adicionar a página de cadastro de usuários. <br><br>Na geração das notas do release, ela seria substituída por:<br>Foi adicionada a página de cadastro de usuários. |
Ignores |
ignores |
string[] |
null |
Os inícios das mensagens de commit que serão ignoradas.<br><br>Exemplo arquivo:<br>["Refatorar.", "Atualizar a versão"] .<br><br>Exemplo CLI:<br>"Refatorar" "Atualizar a versão" .<br><br>Usando a seguinte mensagem de commit como exemplo:<br>chore: Atualizar a versão do pacote. <br><br>Ela seria ignorada, por começar com Atualizar a versão .<br><br>Você também pode ignorar uma mensagem de commit usando o operador # .<br><br>No exemplo abaixo, a mensagem de commit será ignorada, independente de estar ou não em Ignores :<br>chore#: Atualizar a versão do pacote. |
ShowAuthor |
show-author |
boolean |
false |
Um sinalizador indicando se o autor deve ser exibido no final das mensagens de commit.<br>Exemplo: false . |
CreateComand e VersionCommand
Arquivo | CLI | Tipo | Padrão | Sumário |
---|---|---|---|---|
FirstVersion |
first-version |
string |
1.0.0 |
A primeira versão do repositório (SemVer 2.0).<br>Essa propriedade é utilizada na criação do primeiro release.<br>Exemplo: 0.1.0 . |
VersionPrefix |
version-prefix |
string |
v |
O prefixo das versões do repositório.<br>Exemplo: v . |
Autores
- KempDec - Mantedora do projeto de código aberto.
- Vinícius Lima - Desenvolvedor .NET C#.
Licença
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
This package has no dependencies.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 138 | 5/9/2024 |
0.11.0 | 674 | 5/9/2024 |
0.10.0 | 483 | 3/28/2024 |
0.9.1 | 365 | 3/16/2024 |
0.9.0 | 322 | 3/16/2024 |
0.8.0 | 417 | 3/14/2024 |
0.7.1 | 332 | 3/13/2024 |
0.7.0 | 455 | 3/13/2024 |
0.6.3 | 350 | 3/13/2024 |
0.6.2 | 490 | 3/13/2024 |
0.6.1 | 416 | 3/13/2024 |
0.6.0 | 401 | 3/11/2024 |
0.5.0 | 486 | 3/10/2024 |
0.4.0 | 446 | 3/9/2024 |
0.3.0 | 454 | 3/8/2024 |
0.2.0 | 491 | 3/6/2024 |
0.1.0 | 498 | 3/5/2024 |