Präambel
Vor kurzem wurde bei der Verwendung von GitLab CI / CD ein "weniger reibungsloses" Anwendungsszenario entdeckt. Das ist so:
Als Entwickler muss man manchmal die Bereitstellung mehrerer Front-End - Projekte gleichzeitig übernehmen
muss die Bereitstellung in der Testumgebung nach der Fehlerbehebung in Projekt a und
Nach der Fehlerbehebung des Projekts b müssen sie in der Testumgebung bereitgestellt werden.
。。。。
Die Bereitstellung dieses Szenarios erfolgt aus verschiedenen Gründen nicht automatisch und erfordert die manuelle Erstellung einer Bereitstellungs-Pipeline. Zum Beispiel, um Testern eine zuverlässige und stabile Testumgebung zu bieten, wird eine manuelle Bereitstellungsumgebung verwendet.
Dies führt zu einem Problem, in dem ich zuerst in das Projekt A gehen muss, klicken Sie auf die Pipeline, wählen Sie den entsprechenden Zweig aus und erstellen Sie eine Pipeline.
Gehen Sie anschließend wieder in Projekt B und wiederholen Sie die oben genannten Vorgänge.
Der Prozess ist mühsam, weil GitLab keine Art von Pipeline-Management für einzelne Ower-Projekte bietet.
Ähnlich wie die folgenden Bilder mit dem heimischen Devops-Tool:
Da es keine persönliche Perspektive für das Management der Montagelinie gibt, müssen wir die Montagelinie eines Projekts erstellen, um in das Projekt zu gehen. (Vielleicht wird es in naher Zukunft eine solche Funktion geben).
Die Lösung für dieses Problem ist einfach, indem Sie die GitLab OpenAPI verwenden, um die Pipeline zu verwalten, einschließlich Abfragen von Pipelines basierend auf Projekten, Erstellen oder erneuten Ausführen von Pipelines. Aber unabhängig davon, dass Sie einige Seiten schreiben müssen, müssen Sie auch einen Code erstellen, der das Backend sendet, um die Abfrage nach GitLab-Daten zu erstellen.
Die konkrete Idee ist sehr einfach, ich habe nicht viel Freizeit, so dass ich aufbewahrt, bis ich eines Tages einen Wunsch hatte, ob ich mit Node-RED dieses Low-Code - Tool diese globale Fluss-Management - Funktion zu implementieren.
Node-RED ist ein Open-Source - Projekt von IBM. Es ist eine Low-Code - Ereignisgesteuerte Anwendung, die auf Nodejs erstellt wurde.
Mit seinen reichhaltigen Knoten können wir vieles tun.
kann seinen HTTP-Knoten verwenden, um HTTP-Anfragen zu senden, Projektinformationen abzufragen, eine Pipeline-Liste zu verwenden oder eine Pipeline für ein Projekt auszulösen.
Der Dashboard-Knoten kann für die Bereitstellung von Seiten-Bedienfeldfunktionen verwendet werden.
Während des gesamten Entwicklungsprozesses müssen Sie nur ein paar notwendige Parameter konfigurieren, nur wenige Teile des JS-Codes schreiben, der Rest der Datenströme wird übertragen und die Logik wird von Node-RED verarbeitet.
Wir verwenden Node-RED und GitLab OpenAPI für das DevOps-Pipeline - Management.
mit Node-RED und GitLab OpenAPI umfasst die folgenden vier Kernfunktionen:
Vorläufige Analyse, die Funktion umfasst hauptsächlich die folgenden vier Kernfunktionen:
- Abfragen für die Liste der persönlichen Owner-Projekte
- Abfragen für die Liste der Verzweigungen unter einem Projekt nach dem Projekt
- Entdecken Sie die Projektleitungen und zeigen Sie
- Neue Wasserleitung gebaut
- Neuer Auslöser der Linien
Vorbereitung vor dem Beginn
Installation von Node-RED
Die Installation von Node-RED durch Docker ist einfach.
docker run -it -p 1880:1880 --name mynodered nodered/node-redBrowser besuchen http://127.0.0.1:1880/ Erlebt werden kann. Hier gibt es nicht zu viel, aber Interessierte können zu meiner Node-RED - Kolumne wechseln.
Node-RED - Editor-Betriebseite
Andere Installationsmethoden können diese Adresse überprüfen. https://nodered.org/docs/getting-started/
Token erstellen
Da wir die Ressourcen aus persönlicher Sicht abfragen möchten, erstellen wir einen Personal Access Token.
wie folgt abgebildet
Nach der Erstellung, denken Sie daran, es zu speichern, und denken Sie, Sie und er haben nur eine Seite.
Die API
zum Abfragen der API für ein persönliches Projekt muss?owned=truetragen. Zeigt an, dass nur die Elemente des aktuellen BenutzersOwner abfragt werden.
GET /projectsAbfragen der API für die Projekt-Pipeline
GET /projects/:id/pipelinesNeue Pipeline erstellen (außer der Projektid benötigen Sie den notwendigen Parameter ref oder tag)
POST /projects/:id/pipelineRe-Triggering der Pipeline
POST /projects/:id/pipelines/:pipeline_id/retryPraxis
Wir speichern die grundlegende Adresse der Schnittstelle mit dem Token als Stream-Variable, die im gesamten Stream zugänglich sind.
Nach dem Ausführen des Streams wird dann die Liste der Projekte angefordert und an die dropdownübergeben wird und auf einer neuen Seite angezeigt wird.
Wenn der Benutzer ein Projekt ausgewählt hat, fordert er die Liste der Verzweigungen des Projekts an, die an einen anderendropdown- Knoten weitergegeben werden und auf der Seite angezeigt werden.
Sobald der Benutzer einen Zweig ausgewählt hat, wird die Pipeline unter diesem Zweig angefordert und mit dem Knotentableauf der Seite angezeigt.
Wenn der Benutzer auf eine Zeile in der Pipeline-Tabelle klickt, wird die Pipeline erneut ausgeführt. Nach Erfolg wird eine Benachrichtigung erhalten
Letzter Klickcreate pipeline Nach der Schaltfläche wird eine neue Pipeline mit dem aktuell ausgewählten Element und einem Zweig erstellt, und nach erfolgreichem Erfolg wird eine Benachrichtigung erhalten.
Das endgültige vollständige Stream-Logik - Diagramm ist wie
Vollständige Dynamik-Diagramm des Prozesses
Node-RED unterstützt den Export von Streaming-Daten, speichert als JSON-Daten, nachdem der Prozess erstellt wurde, möchte teilen, verteilen, wird es sehr einfach, JSON-Daten zu exportieren, Domain-Namen und Token zu konfigurieren. Wer ein Dokument benötigt, hinterlasse bitte eine Nachricht im Artikel.
Zusammenfassung
Erstellung macht die Arbeit einfacher. Ich hoffe, dass es Ihnen nützlich ist.
Antwort veröffentlichen