1. gitee中配置webhook
如图
2. 服务器中部署用于接收webhook请求的服务器
新建目录并安装依赖
mkdir webHookServer && cd webHookServer
// pm2是一个进程管理工具,可以用它来管理你的node进程,主要是用来重启你的服务器
npm install pm2 -g
bash脚本,实现代码拉取和重启服务器
touch deploy.sh
chmod 770 deploy.sh
vim deploy.sh
#!/bin/bash
echo "Start deployment"
# 假设你要自动化部署的服务器位于/root/yourServer
cd /root/yourServer
git pull
npm install
# 重启你的服务器
pm2 delete app
pm2 start app.js
webHook服务器
// 安装依赖,此处使用express
npm init
npm install express body-parser
/* whServer.js */
const express = require('express')
const bodyParser = require('body-parser')
const router = express.Router()
const cp = require('child_process')
router.post('/wh', (req, res) => {
let password = req.body.password
// password填写gitee中webhook设置的密码
if(password === 'yourpassword') {
console.log(password)
// 运行bash脚本
cp.execFile('/root/webHookServer/deploy.sh', (error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
console.log('部署成功')
})
res.status(200).json({
msg: 'deploy success!'
})
}
// 密码不对,拒绝服务
else {
res.status(400).json({
msg: 'reject'
})
}
})
const server = express()
server.use(bodyParser.urlencoded({extended: false}));
server.use(bodyParser.json());
server.use(router)
server.listen(3333, function() {
console.log('webHook服务器开始运行')
})
部署webHook服务器
// 我用的是centos7, 下面这条命令在后台运行上面的webhook服务器
node whServer.js &
3. 测试一下
回到gitee点击webhook的测试,此时应该能够收到deploy success!的响应并实现了服务器重启