⚡Action que cria tag automáticamente
🎯 O que faz?
Esta action cria automaticamente uma tag baseada na versão do pubspec.yaml sempre que algo é mergeado na branch main.
⚙️ Fluxo da Action:
Trigger: Executa quando há push na branch main
Extrai versão do pubspec.yaml (ex: version: 1.2.3)
Verifica se tag já existe - se sim, para por aqui
Se não existe: Cria tag v1.2.3
Faz push da tag para o repositório
🔄 Conexão com GitFlow
📚 Lembra do GitFlow?
No GitFlow, toda vez que algo vai para Master/Main, precisa ter uma tag de versão. Isso é obrigatório para:
Marcar releases oficiais
Ter histórico de versões
Permitir rollback para versões específicas
Rastrear o que mudou entre versões
🤖 Automatização Inteligente:
GitFlow Manual: GitFlow Automatizado:
1. Merge para main 1. Merge para main
2. [DEV ESQUECE] Criar tag 2. ✅ Action cria tag automaticamente
3. [DEV ESQUECE] Push da tag 3. ✅ Action faz push da tag
Problema resolvido: Devs sempre esquecem de criar tags!
🎯 Fluxo Completo das 2 Actions:
flowchart TD
A[Dev abre PR] --> B[Action 1: Check Pubspec Version]
B --> C{Versão já existe?}
C -->|Sim| D[❌ Bloqueia PR]
C -->|Não| E[✅ Permite continuar]
E --> F[Dev faz merge para main]
F --> G[Action 2: Create Release Tag]
G --> H[✅ Cria tag automaticamente]
🔒 Sistema de Proteção:
Antes do merge: Action verifica se versão é única
Depois do merge: Action cria tag automaticamente
Resultado: Sempre tem tag, nunca duplicada!
💡 Por que esse fluxo é importante?
✅ Benefícios:
Zero intervenção manual - tags criadas automaticamente
Zero versões duplicadas - primeira action previne
100% compatível com GitFlow - toda main tem tag
Histórico limpo - fácil navegar entre versões
Deploys confiáveis - sempre sabemos qual versão está onde
🚀 Cenário Real:
v1.0.0 → Lançamento inicial
v1.0.1 → Hotfix de bug crítico
v1.1.0 → Nova feature de pagamento
v1.1.1 → Correção no pagamento
v2.0.0 → Refatoração completa
Cada tag = um ponto na história que você pode voltar ou deployar.
📋 Resumo Final:
Action 1 (Check): "Ei, essa versão já existe? Se sim, muda ela!" Action 2 (Create): "Beleza, merged! Vou criar a tag pra você."
Resultado: GitFlow automatizado - toda main tem tag única, sem esforço manual! 🎯
Agora a action de "Check Pubspec Version" faz muito mais sentido, né? Ela é a guardiã que garante que a action de criação sempre funcione perfeitamente!
A ACTION ABAIXO:
name: Create Release Tag
on:
push:
branches:
- main
jobs:
create-release-tag:
permissions: write-all
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Git
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
- name: Extract version from pubspec.yaml
id: extract_version
run: |
VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //')
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Check if tag exists
id: check_tag
run: |
if git rev-parse "v${{ env.VERSION }}" >/dev/null 2>&1; then
echo "Tag v${{ env.VERSION }} already exists"
exit 0
fi
- name: Create new tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git tag -a "v${{ env.VERSION }}" -m "Release version ${{ env.VERSION }}"
git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} "v${{ env.VERSION }}"
Last updated