Creación Automática de Pull Requests en Cada Push

La automatización de Git puede agilizar significativamente su flujo de trabajo de desarrollo. Esta guía explora cómo crear automáticamente pull requests cada vez que se hace push de código a su repositorio, utilizando varias herramientas y enfoques.
Puntos Clave
- Aprenda tres métodos diferentes para automatizar la creación de PRs: GitHub Actions, GitHub CLI y herramientas de CI/CD
- Implemente prácticas de automatización seguras con autenticación y permisos adecuados
- Comprenda las mejores prácticas para gestionar pull requests automatizados
- Configure la protección de ramas y la lógica condicional de creación de PRs
Método 1: Usando GitHub Actions (Recomendado)
GitHub Actions proporciona una forma nativa y confiable de automatizar la creación de PRs. Así es como se configura:
Paso 1: Crear un Flujo de Trabajo de GitHub Actions
- Cree un directorio
.github/workflows/
en su repositorio si no existe - Cree un nuevo archivo llamado
auto-pr.yml
- Agregue la siguiente configuración:
name: Auto PR on Push
on:
push:
branches:
- 'feature/**' # Coincide con ramas feature/*
- 'bugfix/**' # Coincide con ramas bugfix/*
# Agregue más patrones de ramas según sea necesario
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 # Requerido para una comparación adecuada de ramas
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: ""PR creado automáticamente desde ${{ github.ref_name }}""
title: ""PR Automático: ${{ github.ref_name }}""
body: |
Pull request automatizado creado desde push a ${{ github.ref_name }}
Rama: ${{ github.ref_name }}
Activado por: ${{ github.actor }}
branch: ${{ github.ref_name }}
base: main
labels: |
automated-pr
needs-review
Paso 2: Configurar los Ajustes del Repositorio
- Vaya a la Configuración de su repositorio → Actions → General
- En ""Permisos de flujo de trabajo"", seleccione ""Permisos de lectura y escritura""
- Guarde los cambios
Método 2: Usando GitHub CLI
Para desarrolladores que prefieren la automatización local, GitHub CLI ofrece una solución sencilla.
Paso 1: Instalar GitHub CLI
Elija su plataforma:
- macOS:
brew install gh
- Ubuntu/Debian:
sudo apt install gh
- Windows:
winget install GitHub.cli
o descargue desde<https://cli.github.com>
- Otra distribución Linux: Siga las instrucciones en
<https://github.com/cli/cli#installation>
Paso 2: Autenticar GitHub CLI
gh auth login
Paso 3: Configurar el Hook Post-Push
Cree y configure el hook post-push:
#!/bin/bash
# Obtener el nombre de la rama actual
BRANCH=$(git rev-parse --abbrev-ref HEAD)
# No crear PR para ramas main/master
if [[ ""$BRANCH"" == ""main"" ]] || [[ ""$BRANCH"" == ""master"" ]]; then
exit 0
fi
# Verificar si el PR ya existe
PR_EXISTS=$(gh pr list --head ""$BRANCH"" --json number --jq length)
if [ ""$PR_EXISTS"" -eq 0 ]; then
# Crear PR si no existe
gh pr create
--base main
--head ""$BRANCH""
--title ""PR Automático: $BRANCH""
--body ""Pull request automatizado creado desde $BRANCH""
--label ""automated-pr""
fi
Método 3: Usando Herramientas de CI/CD
Para equipos que usan otras plataformas de CI/CD, así es como implementar la automatización de PRs usando la API REST de GitHub.
Ejemplo de Jenkins Pipeline
pipeline {
agent any
environment {
GITHUB_TOKEN = credentials('github-token')
}
stages {
stage('Create PR') {
steps {
script {
def branchName = sh(
returnStdout: true,
script: 'git rev-parse --abbrev-ref HEAD'
).trim()
// No crear PR para main/master
if (branchName != 'main' && branchName != 'master') {
def response = sh(
returnStdout: true,
script: """"""
curl -X POST
-H 'Authorization: token ${GITHUB_TOKEN}'
-H 'Accept: application/vnd.github.v3+json'
https://api.github.com/repos/${GITHUB_OWNER}/${GITHUB_REPO}/pulls
-d '{
""title"": ""PR Automático: ${branchName}"",
""head"": ""${branchName}"",
""base"": ""main"",
""body"": ""Pull request automatizado creado desde pipeline de Jenkins""
}'
""""""
)
}
}
}
}
}
}
Mejores Prácticas y Consideraciones de Seguridad
- Habilite reglas de protección de ramas para su rama principal
- Cree plantillas de PR estandarizadas
- Use etiquetas para distinguir PRs automatizados
- Configure la asignación automática de revisores
- Almacene tokens de forma segura usando secretos de repositorio
- Limite los permisos del token a los ámbitos requeridos
- Rote regularmente los tokens de autenticación
- Revise la configuración de PR automatizados para evitar la exposición de datos sensibles
Conclusión
Automatizar la creación de pull requests puede mejorar significativamente su flujo de trabajo de desarrollo al garantizar procesos consistentes de revisión de código y reducir el esfuerzo manual. Ya sea que elija GitHub Actions, GitHub CLI o herramientas de CI/CD, implementar estas técnicas de automatización ayudará a optimizar su proceso de desarrollo y mantener un mejor control de calidad del código.
Preguntas Frecuentes
La automatización de la creación de PRs asegura la consistencia en su proceso de revisión de código, ahorra tiempo, reduce errores humanos y ayuda a mantener un historial claro de los cambios de código. Es especialmente útil para equipos que trabajan simultáneamente en múltiples características.
Se recomienda GitHub Actions para la mayoría de los usuarios, ya que proporciona integración nativa con GitHub, requiere una configuración mínima y ofrece características robustas. Sin embargo, si prefiere la automatización local, GitHub CLI es una buena alternativa, mientras que las herramientas de CI/CD son mejores para entornos empresariales complejos.
Los scripts proporcionados incluyen verificaciones para evitar PRs duplicados. Para GitHub CLI, verificamos los PRs existentes antes de crear nuevos. Con GitHub Actions, puede usar la acción `peter-evans/create-pull-request` que maneja esto automáticamente.
Sí, puede personalizar la plantilla de PR modificando el parámetro body en cualquiera de los métodos. Para las etiquetas, puede agregarlas en el flujo de trabajo de GitHub Actions o en el comando CLI. También puede configurar plantillas de PR para todo el repositorio.
Use secretos de repositorio para almacenar tokens, implemente un alcance adecuado de permisos y rote regularmente las credenciales. Para GitHub Actions, use el GITHUB_TOKEN integrado cuando sea posible. Para herramientas CLI y CI/CD, cree tokens de acceso dedicados con los permisos mínimos requeridos.