Back

Criando Pull Requests Automaticamente a Cada Push

Criando Pull Requests Automaticamente a Cada Push

A automação do Git pode otimizar significativamente seu fluxo de trabalho de desenvolvimento. Este guia explora como criar pull requests automaticamente sempre que o código é enviado para seu repositório, usando várias ferramentas e abordagens.

Principais Aprendizados

  • Aprenda três métodos diferentes para automatizar a criação de PRs: GitHub Actions, GitHub CLI e ferramentas de CI/CD
  • Implemente práticas seguras de automação com autenticação e permissões adequadas
  • Entenda as melhores práticas para gerenciar pull requests automatizados
  • Configure proteção de branch e lógica condicional de criação de PR

Método 1: Usando GitHub Actions (Recomendado)

O GitHub Actions fornece uma maneira nativa e confiável de automatizar a criação de PRs. Veja como configurar:

Passo 1: Criar um Workflow do GitHub Actions

  1. Crie um diretório .github/workflows/ em seu repositório se ele não existir
  2. Crie um novo arquivo chamado auto-pr.yml
  3. Adicione a seguinte configuração:
name: Auto PR on Push

on:
  push:
    branches:
      - 'feature/**'    # Corresponde a branches feature/*
      - 'bugfix/**'     # Corresponde a branches bugfix/*
      # Adicione mais padrões de branch conforme necessário

jobs:
  create-pull-request:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # Necessário para comparação adequada de branches

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v6
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          commit-message: ""Auto-created PR from ${{ github.ref_name }}""
          title: ""Auto PR: ${{ github.ref_name }}""
          body: |
            Automated pull request created from push to ${{ github.ref_name }}
            
            Branch: ${{ github.ref_name }}
            Triggered by: ${{ github.actor }}
          branch: ${{ github.ref_name }}
          base: main
          labels: |
            automated-pr
            needs-review

Passo 2: Configurar as Configurações do Repositório

  1. Vá para Configurações do repositório → Actions → General
  2. Em ""Workflow permissions"", selecione ""Read and write permissions""
  3. Salve as alterações

Método 2: Usando GitHub CLI

Para desenvolvedores que preferem automação local, o GitHub CLI oferece uma solução direta.

Passo 1: Instalar GitHub CLI

Escolha sua plataforma:

  • macOS: brew install gh
  • Ubuntu/Debian: sudo apt install gh
  • Windows: winget install GitHub.cli ou baixe de <https://cli.github.com>
  • Outros Linux: Siga as instruções em <https://github.com/cli/cli#installation>

Passo 2: Autenticar GitHub CLI

gh auth login

Passo 3: Configurar Hook Post-Push

Crie e configure o hook post-push:

#!/bin/bash

# Obter nome do branch atual
BRANCH=$(git rev-parse --abbrev-ref HEAD)

# Não criar PR para branches main/master
if [[ ""$BRANCH"" == ""main"" ]] || [[ ""$BRANCH"" == ""master"" ]]; then
    exit 0
fi

# Verificar se PR já existe
PR_EXISTS=$(gh pr list --head ""$BRANCH"" --json number --jq length)

if [ ""$PR_EXISTS"" -eq 0 ]; then
    # Criar PR se não existir
    gh pr create 
        --base main 
        --head ""$BRANCH"" 
        --title ""Auto PR: $BRANCH"" 
        --body ""Pull request automatizado criado de $BRANCH"" 
        --label ""automated-pr""
fi

[Continua na próxima parte devido ao limite de caracteres…]