Automatische Bereitstellung von Funktionen ohne Server von Git

Bild

Am Beispiel des Gitlab-Bots werde ich zeigen, wie der Freigabeprozess für Funktionen ohne Server automatisiert wird, indem sie automatisch aus dem Git-Repository aktualisiert werden. Wir gehen von Spielen zur praktischen Entwicklung auf Serverless über.

Was ist ein Gitlab-Bot?


Stellen Sie sich vor, Sie müssen den Reaktionsprozess automatisieren, um Aufgaben / Fehler in Ihrem Tracker zu erstellen, z. B. Gitlab (Probleme) oder Jira. Abhängig von den Tags müssen Sie möglicherweise automatisch einen Künstler hinzufügen, die Aufgabe an einen bestimmten Meilenstein verschieben, einen Kommentar hinzufügen oder einfach den bösen Fehler schließen. All dies ist sehr einfach mit serverlosen Funktionen möglich. Als Beispiel fügen wir einer neu erstellten Aufgabe (Problem) einen Kommentar (Hinweis in der Gitlab-Terminologie) hinzu.

Und da sich der Bot häufig ändern kann, werden wir seine Veröffentlichung automatisieren, indem wir die Funktion automatisch mit dem Git-Repository synchronisieren, in dem sie sich befindet.

Umgebungseinstellung


Zuerst müssen wir ein Projekt auf Gitlab erstellen. Wenn Sie kein Gitlab-Konto haben, können Sie hier eines erstellen. Sie können ein neues öffentliches Projekt erstellen, indem Sie beispielsweise mein Projekt https://gitlab.com/bbelky/gitbotswf aufteilen, indem Sie auf die Schaltfläche Gabel in der oberen rechten Ecke klicken.

Bild

Um den Bot-Code bearbeiten zu können, müssen Sie ihn lokal klonen. Für die Zwecke dieses Handbuchs können wir dies zwar online tun, aber wir werden dem wirklichen Leben näher sein. Öffnen Sie Ihr Terminal und klonen Sie das Git-Repository. Der Link befindet sich in der oberen rechten Ecke Ihres Projekts. Klonen > Mit HTTPS klonen . Speichern Sie es als Gitlab-URL , es wird uns weiterhin nützlich sein.

git clone <link to your repo> cd gitbotswf/ ls README.md main.go 

Im geklonten Repository befindet sich eine main.go-Datei. Dies ist unser Bot in Golang geschrieben. Der Bot ist sehr einfach: Er erhält einen Webhook von Gitlab beim Erstellen einer neuen Aufgabe (Problem) und fügt der erstellten Aufgabe einen Kommentar (Hinweis in der Gitlab-Terminologie) hinzu. In main.go finden Sie Kommentare, mit denen Sie herausfinden können, wie der Bot funktioniert. Wir werden nicht näher darauf eingehen.

Schließen Sie das Terminal nicht - wenig später müssen wir die Datei main.go bearbeiten.

Wir müssen auch die Gitlab-Token-API erstellen, um auf die Hitlab-API zugreifen zu können.

  1. Gehen Sie zu Ihrem Gitlab-Profil> Einstellungen > Zugriffstoken.
  2. Erstellen Sie ein neues Token mit API-Bereich.
  3. Kopieren Sie es und speichern Sie es als GITLABTOKEN .

Der Bot


Zeit, den Bot selbst zu erstellen. Erstellen wir eine serverlose Funktion mit dem Code unseres Bots, der auf der serverlosen Plattform Swifty basiert. Wenn Sie noch kein Konto bei Rusonyx Swifty haben, ist es Zeit, ein Konto zu erstellen . Wir möchten den Prozess der Bereitstellung einer neuen Funktion automatisieren. Führen Sie daher die folgende Reihenfolge aus: Verbinden Sie unser Git-Repository, erstellen Sie eine Funktion basierend auf dem Code aus dem Git und legen Sie das Gitlab-API-Token in einem sicheren Speicher ab.

Bild

  1. Melden Sie sich bei Swifty an und wählen Sie Repositorys
  2. Klicken Sie auf Repo anhängen , wählen Sie den Typ der Git-URL aus und fügen Sie Ihre Gitlab-URL ein .
  3. Denken Sie daran, die Option "Repository automatisch spiegeln" auszuwählen und auf "Fertig" zu klicken.

Bild

Jetzt wird Swifty alle 30 Minuten automatisch mit Ihrem Repository synchronisiert (git pull). Erstellen Sie nun die Funktion selbst:

  1. Gehen Sie zu Funktionen > Neue Funktion > Vom Repo ( Registerkarte Vorlagen) .
  2. Wählen Sie das neu hinzugefügte Repository aus, z. B. gitlab.com/bbelky/gitbotswf.git . Jetzt sehen Sie die Dateien aus Ihrem Repository.
  3. Wählen Sie die Datei main.go aus und klicken Sie auf Weiter.
  4. Wählen Sie die Option Mit Repository synchronisieren , geben Sie den Namen der Funktion gitbotswf ein und klicken Sie auf Erstellen .

Bild

Jetzt brauchen wir einen HTTP-API-Trigger. Wenn er aufgerufen wird, wird die Funktion ausgelöst:

  1. Gehen Sie zur Registerkarte Trigger > Add Trigger > REST API (URL) .
  2. Kopieren Sie die resultierende URL und speichern Sie sie als BOT_URL .

Bild

Großartig, jetzt haben wir ein Repository und eine Funktion, die automatisch damit synchronisiert wird. Fügen Sie jetzt unser Gitlab-API-Token zu Swifty Accounts hinzu - einem sicheren und verschlüsselten Repository für Passwörter und Token.

  1. Gehen Sie zu Konten > Konto erstellen .
  2. Wählen Sie einen generischen Typ.
  3. Nennen Sie GITLABTOKEN und kopieren Sie Ihren Token. Speichern.

Bild

Fügen Sie nun den Token zur Funktion hinzu:

  1. Gehen Sie zu Funktionen > gitbotswf- Funktion> Zugriff und klicken Sie auf Hinzufügen .
  2. Wählen Sie den Typ Accounts , GITLABTOKEN und klicken Sie auf Add .

Webhook einschalten


In der letzten Phase müssen wir einen Webhook auf Gitlab erstellen, der jedes Mal ausgelöst wird, wenn ein neues Problem erstellt wird. Fahren wir mit Gitlab fort.

  1. Wählen Sie Ihr Projekt> Einstellungen > Integrationen .
  2. Fügen Sie die zuvor gespeicherte BOT_URL zum URL- Feld hinzu.
  3. Aktivieren Sie das Kontrollkästchen neben Issues-Ereignisse und klicken Sie auf Webhook hinzufügen .

Test


Gehen wir zum Projekt auf Gitlab auf der Registerkarte Probleme und erstellen ein neues Problem. Überprüfen Sie die Kommentare. Ja! Wenn alles gut funktioniert hat, wird der Kommentar "Vielen Dank, dass Sie ein neues Problem gemeldet haben!" Angezeigt. . Wenn irgendwo ein Fehler aufgetreten ist, fragen Sie uns hier oder stellen Sie eine Frage in einem Slot .

Update und automatische Freigabe des Bots


Was ist, wenn wir unseren Bot aktualisieren müssen? Dank der Integration in git müssen Sie lediglich Ihren Code aktualisieren (z. B. den Notiztext ändern), den Code in Gitlab ausführen und Swifty aktualisiert Ihre Funktion automatisch!

Öffnen Sie also die Datei main.go im Terminal und ändern Sie die Notizvariable :

 note := "Comments%20changed!" 

Update git:

 git add * git commit -m "changes" git push origin master 

Gehen Sie serverlos!

Source: https://habr.com/ru/post/de439920/


All Articles