Skip to main content

Bereitstellen von gestapelten Pullanforderungen an Ihre Organisation

Planen und Bereitstellen von gestapelten Pullanforderungen an Ihre Organisation, damit Ihre Teams große Änderungen als kleine, bearbeitbare Ebenen versenden können, ohne Ihre vorhandenen Regeln und Prüfungen zu beeinträchtigen.

Wer kann dieses Feature verwenden?

Enterprise and organization owners

Hinweis

Gestapelte Pullanforderungen befinden sich in Öffentliche Vorschau und können geändert werden.

Mit gestapelten Pullanforderungen können Entwickler große Änderungen in eine Kette kleiner, fokussierter Pullanforderungen unterteilen, die aufeinander aufbauen, wodurch jede Ebene einfacher überprüft, zusammengeführt und ausgeliefert werden kann. Gestapelte Pullanforderungen bieten Entwicklern die Flexibilität, ein Stück Arbeit abzuschließen und direkt zur nächsten zu wechseln, ohne auf Rezensionen warten zu müssen. Dies ist am wichtigsten, wenn die Arbeit natürlich davon abhängt, was vor ihr kam, was üblich ist, wenn ein Team an einer großen Version arbeitet und jede Änderung auf der letzten basiert.

Dieses Lernprogramm führt Sie durch die Vorbereitung Ihrer Organisation auf gestapelte Pullanforderungen: Überprüfen von Rolloutaspekten, Grundlegendes zur Funktionsweise Ihrer Branch-Schutzregeln und CI-Arbeit mit Stapeln und erste Schritte ihrer Teams. Ein grundlegendes Verständnis von gestapelten Pullanforderungen finden Sie unter Informationen zu gestapelten Pullanforderungen.

Voraussetzungen

Wenn Ihr Team bereits Pullanforderungen verwendet, sind Sie für die Verwendung von gestapelten Pullanforderungen eingerichtet. Alles andere in diesem Lernprogramm ist optional, aber es wird davon ausgegangen, dass Ihre Organisation folgendes hat:

  • GitHub CLI, wobei die gh-stack Erweiterung installiert ist. Die CLI-Erweiterung ist die umfassendste Methode zum Erstellen und Verwalten von Stapeln.
  • Branch-Schutzregeln, die für Ihre Standardverzweigung konfiguriert sind.
  • GitHub Actions Workflows, die auf Pullanforderungen ausgeführt werden, die auf Ihre Standardverzweigung abzielen.

Copilot ist nicht erforderlich, um gestapelte Pullanforderungen zu verwenden, wird jedoch für Teams empfohlen, die KI-generierte Änderungen stapeln möchten. Gestapelte Pullanforderungen arbeiten auch mit anderen KI-Codierungs-Agents wie Claude Code und Codex zusammen, indem sie die bereitgestellten Agentenkenntnisse verwenden. Siehe Stack AI-generierter Code in Pullanforderungen.

1. Überlegungen zum Rollout überprüfen

Bevor Sie gestapelte Pullanforderungen für Ihre Teams einführen, lesen Sie die folgenden Überlegungen, damit jeder weiß, was sie erwarten sollten.

Stapel müssen linear sein und dürfen keine Forks enthalten.

Jede Pullanforderung in einem Stapel muss Teil desselben Repositorys sein und auf einer einzigen linearen Verzweigungskette aufbauen. Stapel mit Verzweigungsstrukturen oder Pullanforderungen von Verzweigungen werden nicht unterstützt. Wenn Ihre Teams auf Forks für Beiträge angewiesen sind, sollten Sie diese Beiträge jetzt außerhalb von Stapeln aufbewahren.

Das Neuanordnen eines Stapels erfordert GitHub CLI

Wenn Ihr Team die Pullanforderungen in einem Stapel neu anordnen muss, müssen sie in der gh stackGitHub CLI Erweiterung verwendet gh stack modify werden. Es gibt keine Möglichkeit, einen Stapel von der GitHub Website neu anzuordnen. Teams, die die CLI nicht lokal verwenden, sollten ihre Stapelreihenfolge sorgfältig planen oder die Erweiterung für diese Aufgabe installieren.

Ein abgeschlossener Stapel kann nicht erweitert werden.

Sobald jede Pullanforderung in einem Stapel zusammengeführt wurde, wird dieser Stapel geschlossen. Wenn ein Team neue Verzweigungen oben hinzufügt und ausgeführt wird gh stack submit, startet die CLI einen neuen Stapel mit demselben Basiszweig. Teams, die weiterhin an einem Stapel arbeiten möchten, sollten planen, den Stapel offen zu halten, bis alle Arbeiten abgeschlossen sind.

2. Verstehen, wie Branch-Schutzregeln und CI mit Stapeln funktionieren

Gestapelte Pullanforderungen sind so konzipiert, dass Ihre vorhandenen Regeln auf die gleiche Weise wie jede andere Pullanforderung erzwungen werden, aber es lohnt sich zu verstehen, wie jede Pullanforderung in einem Stapel etwas anders ausgewertet wird als erwartet.

Jede Pullanforderung in einem Stapel, nicht nur der untere, wird anhand der Basis des Stapels ausgewertet (in der Regel main), anstatt gegen die Verzweigung, auf die sie direkt ausgerichtet ist. Dies bedeutet:

  • Erforderliche Überprüfungen, erforderliche Statusprüfungen und CODEOWNERS werden alle für jede Pullanforderung im Stapel gegen den Basiszweig des Stapels erzwungen.
  • Ein GitHub Actions Workflow, der für Ereignisse ausgelöst wird, die für pull_request``mainjede Pullanforderung im Stapel ausgeführt werden, sodass Ihre vorhandene CI-Konfiguration nicht geändert werden muss.
  • Stapelmetadaten sind in Workflowausdrücken verfügbar, github.event.pull_request.stackwenn Sie das Workflowverhalten speziell für gestapelte Pullanforderungen anpassen möchten. Da ein Workflow einmal pro Pullanforderung in einem Stapel ausgeführt wird, können Teams diese Metadaten verwenden, um teure Aufträge für redundante Ausführungen zu überspringen und die CI-Nutzung zu reduzieren. Ausführliche Informationen findest du unter Optimieren von CI für gestapelte Pullanforderungen.

Optional können Sie dies in Aktion sehen, indem Sie einen kleinen Teststapel für ein Repository mit Ihren Standardregelnets und erforderlichen Prüfungen öffnen und folgendes bestätigen:

  1. Überprüfungen und Statusüberprüfungen sind für jede Pullanforderung im Stapel erforderlich, nicht nur der untere.
  2. Ihre CI-Workflows werden auf jeder Pullanforderung im Stapel ausgeführt.
  3. Das Zusammenführen wird blockiert, bis die Pullanforderung im Stapel, den Sie zusammenführen möchten, und alles darunter Ihre Anforderungen erfüllt.

Eine vollständige Liste der Regeln und Anforderungen finden Sie unter Gestapelte Pullanforderungen.

3. Erste Schritte für Ihre Teams

Nachdem Sie die Einführungsüberlegungen überprüft und verstanden haben, wie Ihre Regeln und CI mit Stapeln arbeiten, verweisen Sie Ihre Teams auf Gestapelte Pullanforderungen 🥞, wodurch alles zusammengeführt wird, was sie zum Erstellen, Überprüfen und Zusammenführen von gestapelten Pullanforderungen benötigen.

4. Aktualisieren Ihrer programmgesteuerten Tools

Wenn Ihre Organisation gestapelte Pullanforderungen verwendet, überprüfen Sie interne Tools, Bots oder Dashboards, die Pullanforderungen programmgesteuert erstellen, zusammenführen oder nachverfolgen und aktualisieren, um Stapel zu berücksichtigen.

Wichtig

Für das Zusammenführen einer gestapelten Pullanforderung ist die Stacks-API erforderlich. Die Legacy-Endpunkte für die Zusammenführung von Pullanforderungen können keinen Stapel zusammenführen. Wenn Ihre Organisation Pullanforderungen programmgesteuert zusammenführt, z. B. über interne Tools oder ChatOps-Bots, aktualisieren Sie dieses Tool, um die Stacks-API aufzurufen, bevor gestapelte Pullanforderungen bereitgestellt werden.

Sie können auch stapelaktivität programmgesteuert nachverfolgen, z. B. über Dashboards, Bots oder interne Tools hinweg.

  • REST-API: Jede von der API zurückgegebene Pullanforderung enthält ein stack Objekt, wenn sie zu einem Stapel gehört, wobei die Anzahl, Größe des Stapels, die Position der Pullanforderung darin und der Basiszweig des Stapels angezeigt wird. Eine dedizierte Stacks-API (GET /repos/{owner}/{repo}/stacks) listet auch jeden Stapel in einem Repository oder den spezifischen Stapel auf, der eine bestimmte Pullanforderung enthält. Siehe Gestapelte Pullanforderungen in den REST- und GraphQL-APIs.
  • Webhooks: Die pull_request Webhook-Nutzlast enthält dasselbe stack Objekt, wenn eine Pullanforderung zu einem Stapel gehört. Eine dedizierte stacked Aktion wird ausgelöst, wenn eine Pullanforderung zuerst einem Stapel hinzugefügt wird, sodass Sie den Moment eines Stapelformulars reagieren können.

In beiden Fällen ist null das stack Feld für eigenständige Pullanforderungen vorgesehen, sodass vorhandene Integrationen, die nicht erwarten, dass Stapel unverändert funktionieren.