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:

  1. Trigger: Executa em PRs (abertos ou atualizados)

  2. Extrai versão do pubspec.yaml (ex: version: 1.2.3)

  3. Busca todas as tags do repositório

  4. Verifica se tag v1.2.3 já existe

  5. Se existir: ❌ Falha e bloqueia o PR

  6. 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