Heim >Backend-Entwicklung >Golang >Aufbau eines Webhook-Nutzlastbereitstellungsdienstes in Go
Dieser Artikel beschreibt die Erstellung eines Webhook-Proxys mit Go, der die lokale Entwicklung von Anwendungen ermöglicht, die GitHub-Webhooks abhören. Die Lösung vermeidet die Verwendung von Drittanbieterdiensten wie smee.io oder ngrok, indem sie einen benutzerdefinierten Server und eine CLI-Anwendung erstellt.
Die Herausforderung besteht darin, Webhook-Ereignisse von GitHub an eine Localhost-Entwicklungsumgebung weiterzuleiten. In diesem Tutorial wird eine zweiteilige Lösung vorgestellt: ein Server zum Empfangen von GitHub-Ereignissen und eine CLI zum Weiterleiten dieser Ereignisse an eine lokale Anwendung.
Architektur:
Das System umfasst vier Schlüsselkomponenten:
Die Kommunikation zwischen der CLI und dem Server nutzt Server-Sent Events (SSE), eine einfache, einseitige Pushing-Technologie.
Umsetzung:
Die Projektstruktur umfasst ein cmd
-Verzeichnis für die CLI und die ausführbaren Serverdateien sowie ein internal
-Verzeichnis für freigegebene Pakete. Der Server nutzt die go-sse
-Bibliothek für die SSE-Funktionalität. Die CLI verwendet die backoff
-Bibliothek für eine robuste Verbindungsverarbeitung.
*Server (cmd/web/main.go und internal/server/):**
Der Server verfügt über zwei Endpunkte:
/channel/{channel}
(GET): Stellt eine SSE-Verbindung mit der CLI her./channel/{channel}
(POST): Empfängt GitHub-Webhook-Ereignisse, codiert sie und veröffentlicht sie an die verbundenen CLIs.CLI (cmd/cli/main.go):
Die CLI stellt eine SSE-Verbindung zum Server her, empfängt verschlüsselte Anfragen, dekodiert sie und leitet sie an die angegebene lokale Anwendung weiter. Fehlerbehandlung und exponentielles Backoff werden mithilfe der backoff
-Bibliothek implementiert.
Testen:
Ein einfacher Testserver (cmd/test/main.go
) wird bereitgestellt, um weitergeleitete Webhook-Ereignisse zu empfangen und zu verarbeiten. Nach der Bereitstellung des Servers und der Ausführung der CLI löst das Pushen von Änderungen im GitHub-Repository den Webhook aus, der dann an den lokalen Testserver weitergeleitet wird.
Bereitstellung (Anhänge):
Der Artikel beschreibt die Bereitstellung des Servers mit Docker und Kamal, einem Bereitstellungstool. Es umfasst das Erstellen einer Docker-Datei, das Einrichten von Kamal, das Konfigurieren von Umgebungsvariablen (einschließlich der Verwendung eines Passwort-Managers aus Sicherheitsgründen) und das Hinzufügen eines Endpunkts für die Gesundheitsprüfung. Der Prozess umfasst die Einrichtung eines DigitalOcean-Droplets, die Konfiguration des SSH-Zugriffs und die Verwaltung von Domänennamen und SSL-Zertifikaten mit Let's Encrypt über den Proxy von Kamal. Zusätzliche Sicherheitsmaßnahmen und Verbesserungen der Entwicklungsumgebung werden ebenfalls vorgeschlagen.
Diese robuste Lösung bietet eine flexible und zuverlässige Methode zur Handhabung von GitHub-Webhooks während der lokalen Entwicklung, sodass keine externen Dienste erforderlich sind. In einem zukünftigen Artikel wird es darum gehen, dies zu erweitern, um einen Telegram-Bot zu erstellen.
Das obige ist der detaillierte Inhalt vonAufbau eines Webhook-Nutzlastbereitstellungsdienstes in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!