Hinweis: Das Warteschlangenfeature für das Mergen von Pull Requests befindet sich derzeit in der öffentlichen Betaphase und kann jederzeit geändert werden.
Informationen zu Mergewarteschlangen
Eine Mergewarteschlange kann die Geschwindigkeit erhöhen, mit der Pull Requests in einem stark ausgelasteten Zielbranch gemergt werden, während gleichzeitig sichergestellt wird, dass alle erforderlichen Prüfungen zum Schutz des Branches bestanden wurden.
Sobald ein Pull Request alle erforderlichen Prüfungen zum Schutz der Branches bestanden hat, kann ein Benutzer mit Schreibzugriff auf das Repository diesen Pull Request einer Mergewarteschlange hinzufügen.
Eine Mergewarteschlange kann GitHub Actions verwenden. Weitere Informationen findest du unter Dokumentation zu GitHub Actions.
Mit einer Mergewarteschlange werden temporäre Branches mit einem speziellen Präfix erstellt, um Änderungen in Pull Requests zu überprüfen. Die Änderungen im Pull Request werden dann in eine merge_group
mit der neuesten Version des base_branch
sowie vorhergehenden Änderungen in der Warteschlange gruppiert. GitHub führt alle diese Änderungen im base_branch
zusammen, nachdem die für den Branchschutz erforderlichen Überprüfungen vom base_branch
bestanden wurden.
Weitere Informationen zu Mergemethoden findest du unter Informationen zum Zusammenführen von Pull Requests.
Hinweise:
- Mergewarteschlangen können nicht mit Branchschutzregeln aktiviert werden, die Platzhalterzeichen (
*
) im Branchnamenmuster enthalten. - Eine Mergewarteschlange wartet, bis erforderliche Überprüfungen gemeldet werden, ehe sie mit Mergen fortfahren kann. Du musst deine CI-Konfiguration aktualisieren, um Mergegruppenereignisse auszulösen und zu melden, wenn eine Mergewarteschlange erforderlich ist.
Wenn ein Pull Request mit der neuesten Version des Zielbranchs und den vorhergehenden Änderungen in der Warteschlange gruppiert wurde und die erforderlichen Statusprüfungen fehlgeschlagen sind oder Konflikte mit dem Basisbranch bestehen, entfernt GitHub den Pull Request aus der Warteschlange. In der Zeitachse des Pull Requests wird angezeigt, warum der Pull Request aus der Warteschlange entfernt wurde.
Auslösen von Mergegruppenüberprüfungen mit GitHub Actions
Du kannst das merge_group
-Ereignis verwenden, um deinen GitHub Actions-Workflow auszulösen, wenn ein Pull Request einer Mergewarteschlange hinzugefügt wird. Beachte, dass sich dieses Ereignis von den pull_request
- und push
-Ereignissen unterscheidet.
Hinweis: Wenn dein Repository GitHub Actions verwendet, um erforderliche Überprüfungen für Pull Requests in deinem Repository durchzuführen, musst du die Workflows aktualisieren, um das Ereignis merge_group
als zusätzlichen Trigger einzuschließen. Andernfalls werden Statusüberprüfungen nicht ausgelöst, wenn du einer Mergewarteschlange einen Pull Request hinzufügst. Der Merge ist nicht erfolgreich, da die erforderliche Statusüberprüfung nicht gemeldet wird.
Ein Workflow, der eine vom Schutz des Zielbranch verlangte Überprüfung meldet, sieht wie folgt aus:
on:
pull_request:
merge_group:
Weitere Informationen findest du unter Ereignisse zum Auslösen von Workflows.
Auslösen von Mergegruppenüberprüfungen bei anderen CI-Anbietern
Bei anderen CI-Anbietern musst du möglicherweise deine CI-Konfiguration aktualisieren, damit sie ausgeführt wird, wenn ein mit dem speziellen Präfix gh-readonly-queue/{base_branch}
beginnender Branch erstellt wird.
Verwalten einer Mergewarteschlange
Repositoryadministratoren können eine Mergewarteschlange anfordern, indem sie die Branchschutzeinstellung „Mergewarteschlange anfordern“ in den Schutzregeln für den Basisbranch aktivieren. Weitere Informationen findest du unter Verwalten einer Branchschutzregel.
Nachdem du „Mergewarteschlange erfordern“ aktiviert hast, kannst du auch auf die folgenden Einstellungen zugreifen:
-
Mergemethode: Wähle aus, welche Methode du beim Mergen von Pull Requests in der Warteschlange verwenden möchtest: mergen, Rebase ausführen oder squashen.
-
Buildparallelität: Wähle die maximale Anzahl der zu erstellenden Pull Requests aus (zwischen 1 und 100). Diese Einstellung begrenzt die Anzahl von Pull Requests in der Warteschlange, die gleichzeitig CI-Überprüfungen ausführen können.
-
Mergelimits: Wähle die minimale und maximale Anzahl von Pull Requests, die in einer einzelnen Gruppe gemergt werden sollen (zwischen 1 und 100), sowie ein Timeout aus, nach dem die Warteschlange nicht mehr auf Einträge warten und mit weniger als der minimalen Anzahl von Pull Requests mergen soll.
-
Nur Pull Requests ohne Fehler mergen: Diese Einstellung bestimmt, wie die Mergewarteschlange Gruppen zu mergender Pull Requests bildet.
Wenn diese Option ausgewählt ist, können nur Pull Requests, die die erforderlichen CI-Überprüfungen bestehen, einer Gruppe hinzugefügt werden. Dies kann nützlich sein, wenn du einen Verlauf beibehalten möchtest, in dem sich jeder Commit in einem guten Zustand befindet, oder wenn du verschiedene Überprüfungen für verschiedene Pull Requests ausführst.
Wenn diese Option nicht ausgewählt ist, können Pull Requests, bei denen die erforderlichen Überprüfungen nicht bestanden wurden, einer Gruppe hinzugefügt werden, solange der letzte Pull Request in der Gruppe die erforderlichen Überprüfungen bestanden hat. Wenn der letzte Pull Request in der Gruppe die erforderlichen Überprüfungen bestanden hat, bedeutet dies, dass die Überprüfungen für die kombinierten Änderungen in der Mergegruppe bestanden wurden. Es kann hilfreich sein, dieses Kontrollkästchen nicht zu aktivieren, wenn zeitweilige Testfehler auftreten, die Warteschlange jedoch nicht durch falsch negative Ergebnisse aufgehalten werden soll.
-
Statusüberprüfungstimeout: Wähle aus, wie lange die Warteschlange auf eine CI-Antwort warten soll, bevor sie davon ausgeht, dass die Überprüfungen nicht bestanden wurden.