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
- Crie um diretório
.github/workflows/
em seu repositório se ele não existir - Crie um novo arquivo chamado
auto-pr.yml
- 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
- Vá para Configurações do repositório → Actions → General
- Em ""Workflow permissions"", selecione ""Read and write permissions""
- 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…]