GO 使用Webhook 實(shí)現(xiàn)github 自動(dòng)化部署的方法
通常大家開(kāi)發(fā)大部分是本地git push 提交,服務(wù)器上git pull 手動(dòng)更新。git 可以使用webhook實(shí)現(xiàn)自動(dòng)部署。
webhook是倉(cāng)庫(kù)平臺(tái)的一個(gè)鉤子事件,通過(guò)hook 鉤子監(jiān)聽(tīng)代碼,回調(diào)通知(通知地址就是你在各個(gè)git倉(cāng)庫(kù)平臺(tái)中填寫(xiě)的webhook地址,一般在你的某個(gè)項(xiàng)目倉(cāng)庫(kù)如myproject.git里面的設(shè)置中)倉(cāng)庫(kù)平臺(tái)填寫(xiě)的地址。
其實(shí)原理流程就是:
所以自動(dòng)部署主要實(shí)現(xiàn)方式就是:
- 修改代碼 push
- github(其他倉(cāng)庫(kù)平臺(tái))發(fā)送請(qǐng)求給你的網(wǎng)站服務(wù)器
- 網(wǎng)站服務(wù)器收到更新請(qǐng)求,執(zhí)行自動(dòng)部署腳本
- 自動(dòng)部署腳本執(zhí)行代碼拉取,打包,修改文件等動(dòng)作完成網(wǎng)站的更新部署
1. 下載github-webhook工具:
wget http://img.sgfoot.com/github-webhook1.4.1.linux-amd64.tar.gz
2. 運(yùn)行g(shù)ithub-webhook 安裝
tar -zxvf github-webhook1.4.1.linux-amd64.tar.gz cp github-webhook /usr/bin/ chmod u+x /usr/bin/github-webhook
3.運(yùn)行方式
默認(rèn)端口: 2020,可以更改, http的路由: /web-hook 有效訪問(wèn)地址: http://ip:2020/web-hook -b 是shell腳本路徑參數(shù) -s 是github webhook設(shè)置的密碼
參數(shù)說(shuō)明:
# 非后臺(tái)運(yùn)行 github-webhook -b [shell腳本路徑] -s [github webhook設(shè)置的密碼] # 后臺(tái)運(yùn)行 nohup github-webhook -b [shell腳本路徑] -s [github webhook設(shè)置的密碼] & # 定向日志輸出 nohup github-webhook -b ~/sh/你的腳本.sh -s hook密碼 >> ~/logs/webhook.log 2>&1 &
特性介紹
- 直接運(yùn)行二進(jìn)制文件
- 自定義腳本路徑
- 自定義密碼
- 自定義端口. 0 ~ 65535
- 安靜模式
GLOBAL OPTIONS: --bash value, -b value Execute the script path. eg: /home/hook.sh --port value, -p value http port (default: 2020) --secret value, -s value github hook secret --quiet, -q quiet operation (default: false) --verbose, --vv print verbose (default: false) --help, -h show help (default: false) --version, -v print the version (default: false) 翻譯: GLOBAL OPTIONS: --bash value, -b value Execute the script path. eg: /home/hook.sh 自定義腳本 --port value, -p value http port (default: 2020) 自定義端口,默認(rèn)6666 --secret value, -s value github hook secret 自定義密碼, 不允許為空 --verbose, --vv print verbose (default: false) 打印更多詳細(xì)信息 --quiet, -q quiet operation (default: false) 安靜模式,默認(rèn)關(guān)閉. -q 開(kāi)啟,不輸出任何信息 --help, -h show help (default: false) --version, -v print the version (default: false)
上面介紹幾本參數(shù)使用。好了,言歸正傳:
部署腳本編寫(xiě),該 shell 腳本的主要目的是從 github 拉取代碼,腳本內(nèi)容很簡(jiǎn)單,只做了目錄的簡(jiǎn)要判斷,
代碼目錄存在則更新,不存在則克隆倉(cāng)庫(kù),工作目錄和倉(cāng)庫(kù)名稱、地址請(qǐng)換成大家自己的。
cd ~/ mkdir sh vim webhook.sh
webhook.sh:
#!/bin/bash cd /www/wwwroot/Golang/src if [ ! -d "easy-gin" ]; then git clone https://github.com/fantasylxh/easy-gin fi cd easy-gin git pull
配置github webhook
- 填寫(xiě)你服務(wù)器的地址,http://ip:2020/web-hook
- 設(shè)置的密碼必須與服務(wù)器運(yùn)行
github-webhook -s
設(shè)置的密碼一致.
啟動(dòng)本地的sh腳本:
github-webhook -b ~/sh/webhook.sh -s webhook123 >> ~/logs/webhook.log 2>&1 &
確認(rèn)githup webhook連接是否正常:
測(cè)試webhook是否生效
git push后, 就可以看到github推送的信息,比如本地我新增push一個(gè)文件:
執(zhí)行Commit->push 之后,我們?cè)倏捶?wù)器代碼是否自動(dòng)更新:
到此:webhook 通訊正常。 sh腳本沒(méi)有驗(yàn)證當(dāng)前分支,只做了簡(jiǎn)單的pull,可以帶上-f 強(qiáng)制更新,有興趣的博友可以完善下sh。
總結(jié)
到此這篇關(guān)于GO 使用Webhook 實(shí)現(xiàn)github 自動(dòng)化部署的方法的文章就介紹到這了,更多相關(guān)GO 實(shí)現(xiàn)github 自動(dòng)化部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言開(kāi)發(fā)保證并發(fā)安全實(shí)例詳解
這篇文章主要為大家介紹了Go語(yǔ)言開(kāi)發(fā)保證并發(fā)安全實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Golang中interface轉(zhuǎn)string輸出打印方法
這篇文章主要給大家介紹了關(guān)于Golang中interface轉(zhuǎn)string輸出打印的相關(guān)資料,在go語(yǔ)言中interface轉(zhuǎn)string可以直接使用fmt提供的fmt函數(shù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02Go語(yǔ)言對(duì)JSON進(jìn)行編碼和解碼的方法
這篇文章主要介紹了Go語(yǔ)言對(duì)JSON進(jìn)行編碼和解碼的方法,涉及Go語(yǔ)言操作json的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02golang interface判斷為空nil的實(shí)現(xiàn)代碼
這篇文章主要介紹了golang interface判斷為空nil的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Go語(yǔ)言并發(fā)之Select多路選擇操作符用法詳解
Go?語(yǔ)言借用多路復(fù)用的概念,提供了?select?關(guān)鍵字,用于多路監(jiān)聽(tīng)多個(gè)通道,本文就來(lái)和大家聊聊Go語(yǔ)言中Select多路選擇操作符的具體用法,希望對(duì)大家有所幫助2023-06-06Go語(yǔ)言使用goroutine及通道實(shí)現(xiàn)并發(fā)詳解
這篇文章主要為大家介紹了Go語(yǔ)言使用goroutine及通道實(shí)現(xiàn)并發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08