webhook革命: 使用fish-hook自動部署多個應用

fish-hook

一站式高效管理你多個github webhook.

背景

等你辛苦建立好了靜態博客,卻依然要忍受每次本地更新後,還要ssh到遠程重新git pull一遍的痛苦。

當你終於用webhook handler寫了一堆代碼來解決這個應用的部署問題後,你依然發現,還有許許多多的項目等著你為它們寫部署代碼。

要是有一個集成化的工具,在一個目錄里幫我管理所有的webhook就好了!fish-hook就是為此誕生的,它最大的特色就是:極力縮短開發者花在配置上的時間,約定大於配置。

開始使用

安裝

安裝python3.5或更高版本,再用pip包管理工具安裝fish-hook

$ pip3 install fish-hook

新建fish-hook目錄

$ fish-hook init

ssh進入遠程主機後,運行該命令,並且設置一個通用的埠,例如: 2333。這樣就創建了名為fish的目錄,這是控制所有webhook的總目錄。$ cd fish進入該目錄。

接收端: 為一個倉庫創建webhook

$ fish-hook new

假如你在github上開通了一個名為blog的倉庫,並且打算為其開通webhook來實現自動部署。那麼就輸入blog以及你要為此webhook設定的密鑰。完成後,blog的webhook接收端就部署好了。

發送端: 在github上創建webhook

首先打開倉庫的github設置頁面,然後創建github webhook,填入基本信息。可以注意到Payload URL這一欄,前面的IP地址就是你遠程主機的外網IP地址,之後是你剛剛設置的埠,斜桿後就是blog目錄,與接收端的名字相同

密鑰一欄也要與在fish-hook上設置的相同。

設置接受push事件後的動作

假設你使用git push推送了新的內容到blog倉庫,如何執行特定的shell腳本呢?此時的fish-hook目錄是這樣的:

fish/ config.json blog/ app_config.json push.sh

為什麼有一個push.sh文件呢?就這意味著,當你倉庫接受新的push事件後,fish-hook就會運行push.sh這個shell腳本,裡面的內容完全可以自己設置。

這就是所謂的約定大於配置,webhook接受到什麼樣的命令,就會運行相同名字的shell腳本,當然前提是你的目錄里要存在這個腳本。

上線

$ fish-hook server

fish-hook為你封裝了部署所需的web server。一條命令即可啟動,此時所有的webhook都會被啟用。

開啟2333埠

centos默認開啟了埠防火牆,如果你使用了一些具備安全組的雲主機服務,也需要開放所有安全組哦。

$ sudo firewall-cmd --zone=public --add-port=2333/tcp --permanent

生產環境

使用Screen

screen -d -m fish-hook server

在fish-hook主目錄運行該命令,即可使fish-hook server持久運行下去。

webhook 事件們

events

更多幫助

請查看github倉庫fish-hook


推薦閱讀:

學習js看書籍好還是上機直接敲代碼好?
前端小項目:使用canvas繪畫哆啦A夢
WebCore Rendering
技術乾貨 | Thinking in FE 更現代的 Web 開發

TAG:GitHub | 前端开发 | 后端技术 |