hook koa web 码云_gitee码云使用webhook
原因
我們經常使用GitHub、GitLab、Gitee 之類的倉庫,有時候需要頻繁的發布代碼打包,人工發布,工作量有時候會很大,有時候還容易出錯,所以會使用Jenkins一類的工具進行輔助,但是如果是一個簡單的項目或者是個人項目使用Jenkins就顯得太重了,可以直接使用webhook,比較方便。
什么是webhook
準確的說webhoo是一種web回調或者http的push API,是向APP或者其他應用提供實時信息的一種方式。Webhook在數據產生時立即發送數據,也就是你能實時收到數據。這一種不同于典型的API,需要用了實時性需要足夠快的輪詢。這無論是對生產還是對消費者都是高效的,唯一的缺點是初始建立困難。
Webhook有時也被稱為反向API,因為他提供了API規則,你需要設計要使用的API。Webhook將向你的應用發起http請求,典型的是post請求,應用程序由請求驅動。
配置webhook
知道什么是webhook 后我們就要開始配置我們自己的項目了。
環境:
CentOS7
Gitee(網上GitHub的教程比較多,這個基于碼云)
配置項目公私鑰
生產公鑰
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# Generating public/private rsa key pair...
# 三次回車即可生成 ssh key
查看公鑰
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
添加公鑰
image-2018-153940@2x.png
測試
ssh -T git@gitee.com
Welcome to Gitee.com, yourname! # 返回,說明正常
配置服務器node環境
安裝nvm,服務器上使用nvm 方便多版本node切換
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
vim /etc/profile
#加入下面的內容
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
source /etc/profile
nvm install stable # 安裝穩定版
nvm current # 查看當前的版本
配置相關的腳本
安裝gitee-webhook-handler(GitHub,GitLab,gitee 的包是不同的,不能混用)
mkdir /opt/webhook #創建目錄
cd /opt/webhook
npm init # 初始化項目,方便以后遷移
npm install gitee-webhook-handler --save # 當前的版本為v0.1.2
創建對應的webhook服務
vim webhook.js
var http = require('http')
var createHandler = require('gitee-webhook-handler')
var handler = createHandler({ path: '/webhooks_push', secret: '123456' })# post 所需要用到的秘鑰
function run_cmd(cmd, args, callback) {
var spawn = require('child_process').spawn;
var child = spawn(cmd, args);
var resp = "";
child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
child.stdout.on('end', function() { callback (resp) });
}
handler.on('error', function (err) {
console.error('Error:', err.message)
})
handler.on('Push Hook', function (event) { # 這個地方就是GitHub 和 Gitee 不一樣的地方,需要注意
console.log('Received a push event for %s to %s',
event.payload.repository.name,
event.payload.ref);
run_cmd('sh', ['./deploy.sh'], function(text){ console.log(text) });# 需要執行的腳本位置
})
try {
http.createServer(function (req, res) {
handler(req, res, function (err) {
res.statusCode = 404
res.end('no such location')
})
}).listen(6666) # 服務監聽的端口,可以自行修改
}catch(err){
console.error('Error:', err.message)
}
創建需要執行的腳本
vim deploy.sh
git pull xxxxx # 根據自己的需要自行編寫
測試服務
WX20180225-163439@2x.png
WX20180225-163748@2x.png
顯示ok,說明成功
使用pm2應用進程管理器
使用node 啟動服務不是很方便,推薦使用pm2
npm install -g pm2
pm2 start webhook.js
pm2 monit # 可以通過此命令查看服務的狀態
WX20180225-164721@2x.png
上圖顯示了一些應用的基本信息,可以更好的觀察到服務的狀態
結束
配置完成后,只要pull代碼到倉庫,就會觸發webhook執行腳本,十分的方便,同時減少了工作量,相對采用輪詢的方式消耗的資源更小。
總結
以上是生活随笔為你收集整理的hook koa web 码云_gitee码云使用webhook的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长城汽车开启“1000万悬赏计划” 严
- 下一篇: 4599元 佳能EOS R50正式开售: