
Webhook ist ein leichtes konfigurierbares Tool, das in GO geschrieben wurde, mit dem Sie auf Ihrem Server problemlos HTTP -Endpunkte (Hooks) erstellen können, mit denen Sie konfigurierte Befehle ausführen können. Sie können Daten auch von der HTTP -Anforderung (z. B. Header, Nutzlast oder Abfragevariablen) an Ihre Befehle übergeben. Mit Webhook können Sie auch Regeln angeben, die erfüllt werden müssen, damit der Haken ausgelöst werden kann.
Wenn Sie beispielsweise Github oder Bitbucket verwenden, können Sie Webhook verwenden, um einen Hook einzurichten, der ein Redeploy -Skript für Ihr Projekt auf Ihrem Staging -Server ausführt, wenn Sie Änderungen in den Master -Zweig Ihres Projekts vorantreiben.
Wenn Sie Materie oder Slack verwenden, können Sie eine "ausgehende Webhook -Integration" oder "Slash -Befehl" einrichten, um verschiedene Befehle auf Ihrem Server auszuführen.
Webhook zielt darauf ab, nichts weiter zu tun, als es sollte, und das heißt:
Alles andere liegt in der Verantwortung des Autors des Befehls.
| Skriptable Webhook Gateway, um Ihre benutzerdefinierten Builds, Bereitstellungen und Proxy -Skripte auf Ihren Servern sicher auszuführen. | Ein Event -Tor zur zuverlässigen Einnahme, Überprüfung, Warteschlange, Transformation, Filter, Überwachung, Überwachung und Wiederholung von Webhooks. |
Stellen Sie zunächst sicher, dass Sie Ihre GO 1.21 oder eine neuere Umgebung ordnungsgemäß einrichten und dann rennen
$ go build github.com/adnanh/webhookUm die neueste Version des Webhooks zu erstellen.
Wenn Sie Ubuntu Linux (17.04 oder höher) verwenden, können Sie Webhook mit sudo apt-get install webhook installieren, mit dem die Community-Packaged-Version installiert wird.
Wenn Sie Debian Linux ("Stretch" oder später) verwenden, können Sie Webhook mit sudo apt-get install webhook installieren, das die Community-Packaged-Version (danke @freeekanayaka) von https://packages.debian.org/sid/webhook installiert wird
Wenn Sie FreeBSD verwenden, können Sie Webhook über pkg install webhook installieren.
Vorbereitete Binärdateien für verschiedene Architekturen sind bei Github Releases erhältlich.
Der nächste Schritt besteht darin, einige Hooks zu definieren, die Webhook dienen sollen. Webhook unterstützt JSON- oder YAML -Konfigurationsdateien, aber wir werden uns im folgenden Beispiel hauptsächlich auf JSON konzentrieren. Erstellen Sie zunächst eine leere Datei namens hooks.json . Diese Datei enthält eine Reihe von Hooks, die der Webhook dient. Überprüfen Sie die Hakendefinitionsseite, um die detaillierte Beschreibung der Eigenschaften eines Hakens anzuzeigen und wie sie verwendet werden.
Lassen Sie uns einen einfachen Haken namens redeploy-webhook definieren, der ein Redeploy-Skript in /var/scripts/redeploy.sh ausführt. Stellen Sie sicher, dass Ihr Bash -Skript #!/bin/sh Shebang oben hat.
Unsere hooks.json -Datei sieht jetzt wie folgt aus:
[
{
"id" : " redeploy-webhook " ,
"execute-command" : " /var/scripts/redeploy.sh " ,
"command-working-directory" : " /var/webhook "
}
] Hinweis: Wenn Sie YAML bevorzugen, wäre die äquivalente hooks.yaml -Datei:
- id : redeploy-webhook
execute-command : " /var/scripts/redeploy.sh "
command-working-directory : " /var/webhook "Sie können jetzt Webhook mit verwenden
$ /path/to/webhook -hooks hooks.json -verboseEs startet mit Standardport 9000 und bietet Ihnen einen HTTP -Endpunkt
http://yourserver:9000/hooks/redeploy-webhookÜberprüfen Sie die Seite der Webhook -Parameter, um zu sehen, wie Sie die IP-, Port- und andere Einstellungen wie Hook Hotreload, ausführliche Ausgabe usw. überschreiben, wenn Sie das Webhook starten.
Durch die Ausführung eines einfachen HTTP -GET -oder -Post -Anforderungen an diesen Endpunkt würde Ihr angegebenes Redeploy -Skript ausgeführt. Sauber!
Ein so definierter Hook könnte jedoch eine Sicherheitsbedrohung für Ihr System darstellen, da jeder, der Ihren Endpunkt kennt, eine Anfrage senden und Ihren Befehl ausführen kann. Um dies zu verhindern, können Sie die Eigenschaft "trigger-rule" für Ihren Haken verwenden, um die genauen Umstände anzugeben, unter denen der Haken ausgelöst werden würde. Sie können sie beispielsweise verwenden, um ein Geheimnis hinzuzufügen, das Sie als Parameter angeben müssen, um den Haken erfolgreich auszulösen. Bitte besuchen Sie die Seite "Hook Rules" für eine detaillierte Liste der verfügbaren Regeln und deren Verwendung.
Webhook bietet begrenzte Unterstützung die Analyse von mehrteiligen Formulardaten. Multipart -Formulardaten können zwei Arten von Teilen enthalten: Werte und Dateien. Alle Formularwerte werden automatisch zum payload hinzugefügt. Verwenden Sie die parse-parameters-as-json -Einstellungen, um einen bestimmten Wert als JSON zu analysieren. Alle Dateien werden ignoriert, es sei denn, sie übereinstimmen einem der folgenden Kriterien:
Content-Type ist application/json .parse-parameters-as-json benannt. In beiden Fällen wird der angegebene Dateiteil als JSON analysiert und zur payload hinzugefügt.
Webhook kann die Konfigurationsdatei von Hooks als GO -Vorlage analysieren, wenn der CLI -Parameter -template angegeben wird. Weitere Informationen zur Vorlagenverwendung finden Sie auf der Seite Vorlagen.
Webhook standardmäßig bedient Haken mit HTTP. Wenn Webhook mithilfe von HTTPS sichere Inhalte serviert, können Sie das Flag -secure beim Starten von Webhook verwenden. Dateien, die ein Zertifikat und einen privaten Schlüssel für den Server enthalten, müssen mit den Flags -cert /path/to/cert.pem und -key /path/to/key.pem bereitgestellt werden. Wenn das Zertifikat von einer Zertifikatbehörde unterzeichnet wird, sollte die Zertifikatdatei die Verkettung des Serverzertifikats sein, gefolgt vom Zertifikat der CA.
TLS -Versionen und Cipher Suite -Auswahlflags sind in der Befehlszeile verfügbar. Um die verfügbaren Cipher-Suites aufzulisten, verwenden Sie das Flag -list-cipher-suites . Das Flag -tls-min-version kann mit -list-cipher-suites verwendet werden.
Webhook kann hinter einem "Reverse -Proxy" ausgeführt werden - ein weiterer Web -Server wie Apache HTTPD oder NGINX, der Anfragen von Clients akzeptiert und sie an [Webhook] [h] weiterleitet. Sie können Webhook auf einen regulären TCP -Port oder einen UNIX -Domain -Socket (mit dem -socket -Flag) anhören lassen und Ihren Proxy so konfigurieren, dass Anfragen für einen bestimmten Hostnamen oder Untergrund über diesen Port oder Socket an Webhook gesendet werden.
Beachten Sie, dass die ip-whitelist -Trigger-Regel, wenn Sie in diesem Modus ausgeführt werden, nicht wie erwartet funktioniert, da sie die Adresse des Proxy , nicht des Clients , überprüft. Kunden -IP -Beschränkungen müssen innerhalb des Proxy durchgesetzt werden, bevor er entscheidet, ob die Anfrage an Webhook weitergeleitet werden soll.
Wenn Sie CORS -Header einstellen möchten, können Sie das -header name=value -Flag verwenden, während Sie Webhook starten, um die entsprechenden CORS -Headers festzulegen, die mit jeder Antwort zurückgegeben werden.
systemdAuf Plattformen, die SystemD verwenden, unterstützt Webhook den Socket -Aktivierungsmechanismus . Wenn Webhook feststellt, dass es von einem systemd verwalteten Socket gestartet wurde, wird automatisch verwendet, anstatt einen eigenen Höranschluss zu öffnen. Weitere Informationen finden Sie auf der Seite von Systemd.
Sie können eines der folgenden Docker -Bilder verwenden oder Ihre eigene erstellen (bitte lesen Sie diese Diskussion):
Weitere Informationen zu Hooks finden Sie in der Hakenbeispiele.
Das Webhook-Contrib-Repository finden Sie in einer Sammlungen von Tools und Helfern im Zusammenhang mit Webhook, die von der Webhook-Community beigetragen wurden.
Schauen Sie sich vorhandene Probleme an, um festzustellen, ob jemand anderes auch das gleiche Problem hatte, oder öffnen Sie eine neue.
Digitalocean ist eine einfache und robuste Cloud -Computing -Plattform, die für Entwickler entwickelt wurde.
BrowSStack ist ein Cloud-basiertes Cross-Browser-Test-Tool, mit dem Entwickler ihre Websites auf verschiedenen Browsern auf verschiedenen Betriebssystemen und mobilen Geräten über testen können, ohne dass Benutzer virtuelle Maschinen, Geräte oder Emulatoren installieren müssen.
Unterstützen Sie dieses Projekt, indem Sie Sponsor werden. Ihr Logo wird hier mit einem Link zu Ihrer Website angezeigt.
Dieses Projekt besteht dank aller Menschen, die einen Beitrag leisten. Beitragen!.
Vielen Dank an alle unsere Unterstützer!
Die MIT -Lizenz (MIT)
Copyright (c) 2015 Adnan Hajdarevic [email protected]
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist, um die folgenden Bedingungen zu beantragen.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.