webhook革命: 使用fish-hook自動部署多個應用
fish-hook
一站式高效管理你多個github webhook.
一站式高效管理你多個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 開發