✅Action que checa versão do pubspec
GitHub Action: Check Pubspec Version
🎯 O que faz?
Esta action verifica automaticamente se a versão no pubspec.yaml já existe como tag no repositório quando alguém abre um Pull Request.
⚙️ Fluxo da Action:
Trigger: Executa em PRs (abertos ou atualizados)
Extrai versão do pubspec.yaml (ex: version: 1.2.3)
Busca todas as tags do repositório
Verifica se tag v1.2.3 já existe
Se existir: ❌ Falha e bloqueia o PR
Se não existir: ✅ Permite continuar
💡 Por que é importante?
🚫 Previne Conflitos:
Evita versões duplicadas - não pode ter duas tags v1.2.3
Força o dev a incrementar a versão corretamente
Bloqueia PR antes de fazer merge com versão existente
📦 Controle de Versionamento:
Garante versionamento semântico correto
Automatiza verificação - sem erro humano
Feedback imediato - dev sabe na hora que precisa alterar
🔄 Fluxo Organizado:
Dev cria PR → Action verifica versão → Se já existe, bloqueia
→ Se nova, permite continuar
💡 Resumo: É um guardião automático que impede versões duplicadas, forçando o time a sempre incrementar versões corretamente antes de fazer merge!
A ACTION ABAIXO:
name: Check Pubspec Version
on:
pull_request:
types: [opened, synchronize]
jobs:
check-version:
permissions: write-all
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0 # Fetch all history so we can check tags
- 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: Fetch tags
run: git fetch --tags
- name: Check if tag exists
id: check_tag
run: |
if git tag --list | grep -q "v${{ env.VERSION }}"; then
echo "Tag v${{ env.VERSION }} already exists."
exit 1
else
echo "Tag v${{ env.VERSION }} does not exist."
fi
Last updated