Automatisches Erstellen von Pull Requests bei jedem Push

Git-Automatisierung kann Ihren Entwicklungs-Workflow erheblich optimieren. Dieser Leitfaden erklärt, wie Sie mit verschiedenen Tools und Ansätzen automatisch Pull Requests erstellen, wenn Code in Ihr Repository gepusht wird.
Wichtige Erkenntnisse
- Lernen Sie drei verschiedene Methoden zur Automatisierung der PR-Erstellung kennen: GitHub Actions, GitHub CLI und CI/CD-Tools
- Implementieren Sie sichere Automatisierungspraktiken mit ordnungsgemäßer Authentifizierung und Berechtigungen
- Verstehen Sie Best Practices für die Verwaltung automatisierter Pull Requests
- Richten Sie Branch-Schutz und bedingte PR-Erstellungslogik ein
Methode 1: Verwendung von GitHub Actions (empfohlen)
GitHub Actions bietet eine native, zuverlässige Möglichkeit, die PR-Erstellung zu automatisieren. So richten Sie es ein:
Schritt 1: Erstellen eines GitHub Actions Workflows
- Erstellen Sie ein Verzeichnis
.github/workflows/
in Ihrem Repository, falls es noch nicht existiert - Erstellen Sie eine neue Datei namens
auto-pr.yml
- Fügen Sie die folgende Konfiguration hinzu:
name: Auto PR on Push
on:
push:
branches:
- 'feature/**' # Matches feature/* branches
- 'bugfix/**' # Matches bugfix/* branches
# Add more branch patterns as needed
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 # Required for proper branch comparison
- 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
Schritt 2: Konfigurieren der Repository-Einstellungen
- Gehen Sie zu den Einstellungen Ihres Repositorys → Actions → Allgemein
- Wählen Sie unter ""Workflow-Berechtigungen"" die Option ""Lese- und Schreibberechtigungen""
- Speichern Sie die Änderungen
Methode 2: Verwendung von GitHub CLI
Für Entwickler, die lokale Automatisierung bevorzugen, bietet GitHub CLI eine unkomplizierte Lösung.
Schritt 1: Installieren von GitHub CLI
Wählen Sie Ihre Plattform:
- macOS:
brew install gh
- Ubuntu/Debian:
sudo apt install gh
- Windows:
winget install GitHub.cli
oder Download von<https://cli.github.com>
- Andere Linux-Systeme: Folgen Sie den Anweisungen unter
<https://github.com/cli/cli#installation>
Schritt 2: Authentifizieren von GitHub CLI
gh auth login
Schritt 3: Einrichten des Post-Push-Hooks
Erstellen und konfigurieren Sie den Post-Push-Hook:
#!/bin/bash
# Get current branch name
BRANCH=$(git rev-parse --abbrev-ref HEAD)
# Don't create PR for main/master branches
if [[ ""$BRANCH"" == ""main"" ]] || [[ ""$BRANCH"" == ""master"" ]]; then
exit 0
fi
# Check if PR already exists
PR_EXISTS=$(gh pr list --head ""$BRANCH"" --json number --jq length)
if [ ""$PR_EXISTS"" -eq 0 ]; then
# Create PR if it doesn't exist
gh pr create
--base main
--head ""$BRANCH""
--title ""Auto PR: $BRANCH""
--body ""Automated pull request created from $BRANCH""
--label ""automated-pr""
fi
Methode 3: Verwendung von CI/CD-Tools
Für Teams, die andere CI/CD-Plattformen verwenden, hier ein Beispiel, wie Sie die PR-Automatisierung mit der GitHub REST-API implementieren können.
Jenkins Pipeline Beispiel
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()
// Don't create PR for 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"": ""Auto PR: ${branchName}"",
""head"": ""${branchName}"",
""base"": ""main"",
""body"": ""Automated pull request created from Jenkins pipeline""
}'
""""""
)
}
}
}
}
}
}
Best Practices und Sicherheitsüberlegungen
- Aktivieren Sie Branch-Schutzregeln für Ihren Hauptbranch
- Erstellen Sie standardisierte PR-Vorlagen
- Verwenden Sie Labels, um automatisierte PRs zu unterscheiden
- Richten Sie die automatische Zuweisung von Reviewern ein
- Speichern Sie Token sicher mithilfe von Repository-Geheimnissen
- Beschränken Sie die Token-Berechtigungen auf die erforderlichen Bereiche
- Rotieren Sie Authentifizierungstoken regelmäßig
- Überprüfen Sie die Einstellungen für automatisierte PRs, um die Offenlegung sensibler Daten zu verhindern
Fazit
Die Automatisierung der Erstellung von Pull Requests kann Ihren Entwicklungs-Workflow erheblich verbessern, indem sie konsistente Code-Review-Prozesse sicherstellt und den manuellen Aufwand reduziert. Ob Sie sich für GitHub Actions, GitHub CLI oder CI/CD-Tools entscheiden, die Implementierung dieser Automatisierungstechniken wird dazu beitragen, Ihren Entwicklungsprozess zu optimieren und eine bessere Kontrolle der Codequalität zu gewährleisten.
FAQs
Die Automatisierung der PR-Erstellung sorgt für Konsistenz in Ihrem Code-Review-Prozess, spart Zeit, reduziert menschliche Fehler und hilft, eine klare Historie der Codeänderungen zu pflegen. Dies ist besonders nützlich für Teams, die gleichzeitig an mehreren Features arbeiten.
GitHub Actions wird für die meisten Benutzer empfohlen, da es eine native Integration mit GitHub bietet, nur minimale Einrichtung erfordert und robuste Funktionen bietet. Wenn Sie jedoch lokale Automatisierung bevorzugen, ist GitHub CLI eine gute Alternative, während CI/CD-Tools besser für komplexe Unternehmensumgebungen geeignet sind.
Die bereitgestellten Skripte enthalten Prüfungen, um doppelte PRs zu verhindern. Für GitHub CLI prüfen wir vorhandene PRs, bevor wir neue erstellen. Mit GitHub Actions können Sie die Aktion `peter-evans/create-pull-request` verwenden, die dies automatisch handhabt.
Ja, Sie können die PR-Vorlage anpassen, indem Sie den Body-Parameter in einer der Methoden ändern. Für Labels können Sie diese im GitHub Actions Workflow oder im CLI-Befehl hinzufügen. Sie können auch repository-weite PR-Vorlagen einrichten.
Verwenden Sie Repository-Geheimnisse zum Speichern von Token, implementieren Sie eine ordnungsgemäße Bereichseinschränkung für Berechtigungen und rotieren Sie Anmeldedaten regelmäßig. Verwenden Sie für GitHub Actions nach Möglichkeit das integrierte GITHUB_TOKEN. Erstellen Sie für CLI- und CI/CD-Tools dedizierte Zugriffs-Token mit minimal erforderlichen Berechtigungen.