gitee碼云使用webhook

原因

我們經(jīng)常使用GitHub、GitLab继薛、Gitee 之類的倉庫修壕,有時候需要頻繁的發(fā)布代碼打包,人工發(fā)布遏考,工作量有時候會很大慈鸠,有時候還容易出錯,所以會使用Jenkins一類的工具進行輔助灌具,但是如果是一個簡單的項目或者是個人項目使用Jenkins就顯得太重了林束,可以直接使用webhook,比較方便稽亏。

什么是webhook

準(zhǔn)確的說webhoo是一種web回調(diào)或者h(yuǎn)ttp的push API壶冒,是向APP或者其他應(yīng)用提供實時信息的一種方式。Webhook在數(shù)據(jù)產(chǎn)生時立即發(fā)送數(shù)據(jù)截歉,也就是你能實時收到數(shù)據(jù)胖腾。這一種不同于典型的API,需要用了實時性需要足夠快的輪詢。這無論是對生產(chǎn)還是對消費者都是高效的咸作,唯一的缺點是初始建立困難锨阿。

Webhook有時也被稱為反向API,因為他提供了API規(guī)則记罚,你需要設(shè)計要使用的API墅诡。Webhook將向你的應(yīng)用發(fā)起http請求,典型的是post請求桐智,應(yīng)用程序由請求驅(qū)動末早。

配置webhook

知道什么是webhook 后我們就要開始配置我們自己的項目了。
環(huán)境:
CentOS7
Gitee(網(wǎng)上GitHub的教程比較多说庭,這個基于碼云)

  • 配置項目公私鑰
  1. 生產(chǎn)公鑰
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"  

# Generating public/private rsa key pair...
# 三次回車即可生成 ssh key
  1. 查看公鑰
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
  1. 添加公鑰


    image-2018-153940@2x.png
  2. 測試

ssh -T git@gitee.com
Welcome to Gitee.com, yourname! # 返回然磷,說明正常
  • 配置服務(wù)器node環(huán)境
  1. 安裝nvm,服務(wù)器上使用nvm 方便多版本node切換
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
vim /etc/profile
#加入下面的內(nèi)容
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
source /etc/profile
nvm install stable # 安裝穩(wěn)定版
nvm current # 查看當(dāng)前的版本
  1. 配置相關(guān)的腳本
    安裝gitee-webhook-handler(GitHub,GitLab,gitee 的包是不同的刊驴,不能混用)
mkdir /opt/webhook #創(chuàng)建目錄
cd /opt/webhook
npm init # 初始化項目姿搜,方便以后遷移
npm install  gitee-webhook-handler --save # 當(dāng)前的版本為v0.1.2
  1. 創(chuàng)建對應(yīng)的webhook服務(wù)
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) });# 需要執(zhí)行的腳本位置
})
try {
  http.createServer(function (req, res) {
    handler(req, res, function (err) {
      res.statusCode = 404
      res.end('no such location')
    })
  }).listen(6666) # 服務(wù)監(jiān)聽的端口捆憎,可以自行修改
}catch(err){
  console.error('Error:', err.message)
}
  1. 創(chuàng)建需要執(zhí)行的腳本
vim deploy.sh
git pull xxxxx  # 根據(jù)自己的需要自行編寫
  1. 測試服務(wù)


    WX20180225-163439@2x.png
WX20180225-163748@2x.png

顯示ok舅柜,說明成功

使用pm2應(yīng)用進程管理器

使用node 啟動服務(wù)不是很方便,推薦使用pm2

npm install -g pm2
pm2 start webhook.js
pm2 monit # 可以通過此命令查看服務(wù)的狀態(tài)
WX20180225-164721@2x.png

上圖顯示了一些應(yīng)用的基本信息躲惰,可以更好的觀察到服務(wù)的狀態(tài)

結(jié)束

配置完成后致份,只要pull代碼到倉庫,就會觸發(fā)webhook執(zhí)行腳本礁扮,十分的方便知举,同時減少了工作量,相對采用輪詢的方式消耗的資源更小太伊。

參考:https://www.npmjs.com/package/gitee-webhook-handler

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雇锡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子僚焦,更是在濱河造成了極大的恐慌锰提,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芳悲,死亡現(xiàn)場離奇詭異立肘,居然都是意外死亡,警方通過查閱死者的電腦和手機名扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門谅年,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肮韧,你說我怎么就攤上這事融蹂⊥” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵超燃,是天一觀的道長区拳。 經(jīng)常有香客問我,道長意乓,這世上最難降的妖魔是什么樱调? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮届良,結(jié)果婚禮上笆凌,老公的妹妹穿的比我還像新娘。我一直安慰自己伙窃,他們只是感情好菩颖,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布样漆。 她就那樣靜靜地躺著为障,像睡著了一般。 火紅的嫁衣襯著肌膚如雪放祟。 梳的紋絲不亂的頭發(fā)上鳍怨,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音跪妥,去河邊找鬼鞋喇。 笑死,一個胖子當(dāng)著我的面吹牛眉撵,可吹牛的內(nèi)容都是我干的侦香。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼纽疟,長吁一口氣:“原來是場噩夢啊……” “哼罐韩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起污朽,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤散吵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蟆肆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡枚冗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年赁温,在試婚紗的時候發(fā)現(xiàn)自己被綠了肛宋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝陈。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡沉帮,死狀恐怖贫堰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喇勋,我是刑警寧澤川背,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布熄云,位于F島的核電站妙真,受9級特大地震影響珍德,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜薄料,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一都办、第九天 我趴在偏房一處隱蔽的房頂上張望琳钉。 院中可真熱鬧蛛倦,春花似錦溯壶、人聲如沸甫男。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽端幼。三九已至弧满,卻和暖如春庭呜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郊供。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吉执,地道東北人地来。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓咕宿,卻偏偏與公主長得像府阀,于是被迫代替她去往敵國和親试浙。 傳聞我的和親對象是個殘疾皇子寞蚌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理抄伍,服務(wù)發(fā)現(xiàn)管宵,斷路器啄糙,智...
    卡卡羅2017閱讀 134,707評論 18 139
  • 用到的組件 1沈堡、通過CocoaPods安裝 2诞丽、第三方類庫安裝 3僧免、第三方服務(wù) 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,626評論 1 180
  • 想開燈 哦 燈壞了 想吃飯 哦 菜涼了 想睡覺 哦 床冰了 你走了 我的心 也追去了
    上官子瑜閱讀 166評論 0 0
  • 關(guān)于softmax的詳細(xì)說明捏浊,請看Softmax懂衩。 通過Softmax回歸,將logistic的預(yù)測二分類的概率的...
    dopami閱讀 3,803評論 0 0
  • ——暨“以白酒自助餐消費模式為入口金踪,進入慢酌客生態(tài)圈成員增值體系” 一、 白酒消費之痛: 1法希、 無論以何種名義宣傳...
    慢酌客合伙人茶社閱讀 835評論 0 0