const http = require('http');
const passwd = '123456'; //见说明1
const path = '/home/www/omange'; //配置需要拉取的路径
const process = require('child_process');
const port = 8888; // 服务器端口
const server = http.createServer((req, res) => {
});
server.on('clientError', (err, socket) => {
socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});
server.on('request',function(r,s){
let headers = r.headers;
let token =headers['x-gitee-token'];
let userAgent = headers['user-agent'];
let event = headers['x-gitee-event'];
if (headers && token == passwd && userAgent == "git-oschina-hook" && event == "Push Hook")
{
process.exec(`cd ${path} && git pull`,function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
s.write('-1')
}
console.log(stdout);
});
s.write('1');
}
else
{
s.write('0');
}
});
server.listen(port);
说明
- 码云的验证token设置一致即可

使用
- 复制代码保存为hook.js
- 安装好node环境,测试通过版本node v10 快捷安装yum install node(centos)
- 安装pm2 npm install -g pm2
- 配置git 编辑.git目录下面的config文件最下面加上
[credential]
helper = store
输入一次账户密码就保存下来了
- 服务器端口需要开放,云服务器需要设置安全组开放
- 启动 pm2 start hook.js

本文介绍如何利用Node.js创建一个服务器,监听码云的PushHook事件,自动执行git pull命令更新指定路径的代码,实现自动化部署。文章涵盖了代码示例、环境配置及常见问题解决方案。
1010

被折叠的 条评论
为什么被折叠?



