
Webhook是用GO編寫的輕巧配置工具,它使您可以輕鬆地在服務器上創建HTTP端點(鉤),您可以使用它來執行已配置的命令。您還可以將數據從HTTP請求(例如標題,有效負載或查詢變量)傳遞給您的命令。 Webhook還允許您指定必須滿足的規則才能觸發鉤子。
例如,如果您使用的是github或bitbucket,則可以使用Webhook設置一個掛鉤,該掛鉤在登台服務器上為您的項目運行重新部腳本時,只要您推動項目的主分支更改。
如果您使用最重要的或Slack,則可以設置“傳出的Webhook Integration”或“ slash命令”在服務器上運行各種命令,然後可以使用“輸入的Webhook集成”或適當的響應主體直接向您或您的頻道報告。
Webhook的目的是做什麼,而不是應該做的,也就是說:
其他一切都是命令作者的責任。
| 腳本可在服務器上安全運行自定義構建,部署和代理腳本的腳本可安全的網關。 | 可靠地攝入,驗證,隊列,變換,過濾,檢查,監視和重播Webhooks的事件網關。 |
要開始
$ go build github.com/adnanh/webhook構建最新版本的Webhook。
如果您使用的是Ubuntu Linux(17.04或更高版本),則可以使用sudo apt-get install webhook該Webhook將安裝社區打包版本。
如果您使用的是Debian Linux(“ strenth”或更高版本),則可以使用sudo apt-get install webhook安裝Webhook安裝Webhook,該Webhook將從https://packages.debian.org/sid/webhook/webhook中安裝社區打包版本(感謝@freeekanayaka)
如果您使用的是FreeBSD,則可以使用pkg install webhook 。
GitHub版本可在GitHub版本中獲得用於不同體系結構的預建二維。
下一步是定義您希望Webhook使用的一些鉤子。 Webhook支持JSON或YAML配置文件,但我們將主要關注以下示例中的JSON。首先創建一個名為hooks.json的空文件。該文件將包含Webhook將使用的一系列掛鉤。檢查掛鉤定義頁面以查看鉤子可以包含的屬性以及如何使用它們的詳細說明。
讓我們定義一個名為redeploy-webhook的簡單鉤子,它將在/var/scripts/redeploy.sh中運行一個重部腳本。確保您的bash腳本在頂部具有#!/bin/sh shebang。
我們的hooks.json文件現在看起來像這樣:
[
{
"id" : " redeploy-webhook " ,
"execute-command" : " /var/scripts/redeploy.sh " ,
"command-working-directory" : " /var/webhook "
}
]注意:如果您喜歡yaml,則等效hooks.yaml文件將是:
- id : redeploy-webhook
execute-command : " /var/scripts/redeploy.sh "
command-working-directory : " /var/webhook "您現在可以使用Webhook使用
$ /path/to/webhook -hooks hooks.json -verbose它將在默認端口9000上啟動,並為您提供一個HTTP端點
http://yourserver:9000/hooks/redeploy-webhook檢查Webhook參數頁面,以查看如何在啟動Webhook時覆蓋IP,端口和其他設置,例如Hook Hotrelod,冗長輸出等。
通過執行簡單的HTTP獲取或發佈到該端點的請求,將執行您指定的重新部腳本。整潔的!
但是,掛鉤定義可能會對您的系統構成安全威脅,因為任何了解您的端點的人都可以發送請求並執行您的命令。為了防止這種情況,您可以將"trigger-rule"屬性用於鉤子,以指定觸發鉤子的確切情況。例如,您可以使用它們添加一個秘密,必須作為參數提供,以成功觸發鉤子。請查看“掛鉤規則”頁面,以獲取可用規則及其使用的詳細列表。
Webhook提供有限的支持多部分錶單數據的解析。多部分形式數據可以包含兩種類型的零件:值和文件。所有表單值將自動添加到payload範圍中。使用parse-parameters-as-json設置來解析給定值作為JSON。除非匹配以下標準之一,否則所有文件都將被忽略:
Content-Type標頭是application/json 。parse-parameters-as-json設置中命名。無論哪種情況,給定的文件零件都將被解析為JSON並添加到payload圖中。
當給出-template CLI參數時,Webhook可以將掛鉤配置文件解析為GO模板。有關模板使用情況的更多詳細信息,請參見“模板”頁面。
默認情況下,Webhook使用HTTP提供鉤子。如果您希望Webhook使用HTTPS提供安全的內容,則可以在啟動Webhook時使用-secure標誌。必須使用-cert /path/to/cert.pem和-key /path/to/key.pem flags提供包含證書和匹配服務器的專用密鑰的文件。如果證書由證書授權簽署,則證書文件應為服務器證書的串聯,然後是CA的證書。
TLS版本和密碼套件選擇標誌可從命令行獲得。要列出可用的密碼套件,請使用-list-cipher-suites標誌。 -tls-min-version標誌可以與-list-cipher-suites一起使用。
Webhook可以在“反向代理”的後面運行,這是另一家面向Web的服務器,例如Apache HTTPD或NGINX,該服務器接受客戶的請求並將其轉發到[Webhook] [H] [H]。您可以讓Webhook在常規的TCP端口或Unix域套接字(帶有-socket標誌)上偵聽,然後配置代理以向Webhook發送該端口或套接字上的特定主機名或子路徑的請求。
請注意,在此模式下運行時, ip-whitelist觸發規則將無法正常工作,因為它將檢查代理的地址,而不是客戶端的地址。客戶IP限制將需要在代理中執行,然後才能將請求轉發到Webhook。
如果要設置CORS標頭,則可以在啟動Webhook時使用-header name=value flag,以設置每個響應中將返回的適當的CORS標頭。
systemd下運行在使用SystemD的平台上,Webhook支持套接字激活機制。如果Webhook檢測到它是從系統管理的套接字啟動的,它將自動使用它,而不是打開自己的聽力端口。有關完整的詳細信息,請參見SystemD頁面。
您可以使用以下Docker映像之一,也可以創建自己的圖像(請閱讀此討論):
查看鉤子示例頁面以獲取更複雜的鉤子示例。
有關與Webhook社區貢獻有關的Webhook-Contrib存儲庫,請參閱Webhook-Contrib存儲庫。
查看現有的問題,以查看其他人是否也遇到相同的問題,或者打開一個新問題。
Digitalocean是一個為開發人員設計的簡單且強大的雲計算平台。
Browserstack是一種基於雲的跨瀏覽器測試工具,它使開發人員能夠在不同操作系統和移動設備上的各種瀏覽器上測試其網站,而無需用戶安裝虛擬機,設備或模擬器。
通過成為贊助商來支持這個項目。您的徽標將在此處顯示您網站的鏈接。
由於所有貢獻的人,該項目的存在。貢獻! 。
感謝我們所有的支持者!
麻省理工學院許可證(MIT)
版權(c)2015 adnan hajdarevic [email protected]
特此免費授予獲得此軟件副本和相關文檔文件副本(“軟件”)的任何人,以無限制處理該軟件,包括無限制的使用權,複製,複製,修改,合併,合併,發布,分發,分發,分發,訂婚,和/或允許軟件的副本,並允許對以下條件提供以下條件,以下是以下條件。
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。在任何情況下,作者或版權持有人都不應對任何索賠,損害賠償或其他責任責任,無論是在合同,侵權的訴訟中還是其他責任,是由軟件,使用或與軟件中的使用或其他交易有關的。