日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hook koa web 码云_gitee码云使用webhook

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。