Kann das Pull Request-Modell von GitHub zur Implementierung von Post-Genehmigungen verwendet werden?


7

Die akzeptierte Antwort auf " Was sind mögliche Implementierungen (oder Beispiele) des Vier-Augen-Prinzips? " Schlägt vor, dass das Pull-Request-Modell von GitHub eine mögliche Implementierung ist.

Und meine eigene Antwort auf " Wie wird das Vier-Augen-Prinzip für Notfallkorrekturen implementiert? " Erklärt das Konzept der Nachgenehmigungen .

Meine Frage : Kann das Pull Request-Modell von GitHub auch für die Implementierung von Post-Genehmigungen verwendet werden? Wenn das so ist, wie? Wenn nicht, gibt es noch etwas in Git (GitHub?), Das ich dafür verwenden könnte?


Ist die Beschreibung des Beitragsprozesses des Küchenchefs sinnvoll? es mit einem Link zu zitieren wäre Plagiat, und ich glaube nicht, dass ich zusätzlich zum Tipp etwas hinzufügen werde.
Tensibai

Bonjoiur @Tensibai ... Ich verstehe nicht, wie dieser Prozess für solche Post-Genehmigungen verwendet / in Betracht gezogen werden könnte (muss ich sein, der ihn nicht bekommt). Vielleicht sollten Sie eine Antwort hinzufügen (unter Bezugnahme auf diesen Link) und eine Erklärung hinzufügen, warum Sie glauben, dass ein solcher Prozess meine Frage beantwortet?
Pierre.Vriens

Ich nehme an, ich werde ein paar von dem wiederholen, was Richard bereits gesagt hat. Der Hauptpunkt ist, dass die Betreuer das Recht haben, sich im Master zusammenzuschließen, damit sie dem gleichen Schema folgen, ihre eigene Arbeit genehmigen und sie später noch überprüfen können.
Tensibai

Alles in allem ist dies der Github-Weg, um Ihre in Ihrer Frage verknüpfte Antwort
festzulegen

Antworten:


3

Ja, das glaube ich. Um zu erklären, dass ich einige Grundlagen dafür schaffen muss, wie ich etwas Ähnliches implementiert habe, habe ich das Modell vereinfacht, um es so klar wie möglich zu machen.

Annahmen

Ich gehe hier davon aus, dass Jenkins, TeamCity oder ähnliches als CI / CD-Tool der Wahl verwendet wird. Zusätzlich wird GitHub verwendet und es gibt eine gut definierte und entsprechend gesteuerte Verzweigungsstruktur:

Verzweigungsdiagramm

Aufbau

In diesem Beispiel ist GitHub wie folgt konfiguriert:

  • Der schwarze 'Master'-Zweig kann nur mit Pull Requests zusammengeführt werden , direkte Commits sind nicht zulässig.
  • Der blaue Zweig "Entwicklung" kann direkte Commits oder Zusammenschlüsse akzeptieren. In der Praxis kann es zusätzliche Einschränkungen für diesen Zweig geben.
  • Der rote 'Hotfix'-Zweig kann direkte Commits und Zusammenführungen akzeptieren.
  • Erforderliche Statusprüfungen werden im strengen Modus aktiviert , um zu verhindern, dass Pull-Anforderungen zusammengeführt werden, wenn der Zweig den Build nicht besteht.
  • Wenn der Hotfix-Zweig vor dem Master liegt, werden Pull-Anforderungen in den Master blockiert, entweder mit der Status-API oder den Pre-Receive-Hooks auf GitHub Enterprise .

Die CI / CD-Tools sind wie folgt konfiguriert:

  • Builds aus dem Entwicklungszweig können nicht für die Produktion bereitgestellt werden.
  • Builds von Master können in allen Umgebungen bereitgestellt werden.
  • Builds von Hotfix können in allen Umgebungen bereitgestellt werden.
  • Deployments von Hotfix wird einige Nicht-Entwicklungsfunktion, zum Beispiel das Ändern / Veröffentlichung Team benachrichtigen und sie bitten, die auszuführen nach der Genehmigung .

Anmerkungen

Der Master ist geschützt, da er den aktuellen Produktionsstatus darstellt. Um dies praktisch zu tun, haben Sie möglicherweise einen anderen "Release" -Zweig, von dem aus Bereitstellungen vorgenommen werden, und zwar nur dann, wenn der Master-Zweig erfolgreich zusammengeführt wurde.

Wichtige Punkte

Die Blue Development-Niederlassung ist im Grunde genommen ein Alleskönner. Hotfix ist eine Art eines free-for-all aber alle Installationen eine Art auslösen Break Glass durch eine Nicht-Entwicklung Funktion benachrichtigt, die den Willen ausführt nach der Genehmigung und in dem Prozess wird die Änderung in Meister verschmelzen.

Es ist wichtig, in den Master-Stop zu verschmelzen, während Hotfix dem Master voraus ist, um:

  1. Verhindern Sie, dass der Master den Hotfix überschreibt, was zu einer Regression führen kann.
  2. Verhindern Sie, dass ein Hotfix im Hotfix-Zweig schmachtet, ohne zusammengeführt zu werden.

In einigen Organisationen kann es hilfreich sein, alle Pushs in das zentrale GitHub-Repository zu verhindern, während ein Hotfix nach der Genehmigung aussteht.


Netter Richard, Merci! Ich werde einige der Dinge, die Sie in Ihrer Antwort geschrieben haben, verdauen und möglicherweise später einige zusätzliche Kommentare hinzufügen, um einige Dinge zu klären / zu vervollständigen, über die Sie geschrieben haben. Gegebenenfalls kann ich auch Folgefragen hinzufügen. Kennen Sie etwas wie "Die Antwort auf eine Frage löst 10 neue Fragen aus ..."?
Pierre.Vriens

@ Pierre.Vriens, bitte stellen Sie viele Fragen. Ich habe das Obige effektiv aus der Implementierung von GitHub Enterprise und Jenkins durch einen Kunden extrahiert und vollständig aus dem Speicher - es ist möglich, dass ich etwas verpasst habe. Ich habe 4 Stunden gebraucht, um es zu schreiben da habe ich sehr genau nachgesehen. "Die Antwort auf eine Frage löst 10 neue Fragen aus" ist in der Beratung sehr verbreitet.
Richard Slater

Haben Sie jemals die Gelegenheit bekommen, die Fragen auf "Papier" zu bringen? Gerne sprechen wir im Chat darüber, wenn Sie es vorziehen.
Richard Slater
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.