Git自动化部署项目
- 前言
- Git自动化部署项目
- 自动化脚本sh
- nodejs监听端口服务
- PM2启动node服务
- 创建WebHooks
- 思考总结
前言
本次以egg后端项目关联gitee自动化部署为例子,涉及PM2进程管理工具、WebHooks、自动化脚本sh、nodejs监听端口服务等知识,此外服务器需要node环境。
Git自动化部署项目
自动化脚本sh
autoBulid.sh (路径:/var/www/)
cd /var/www/node-egg
npm run stop
git reset --hard origin/master
git clean -f
git pull
npm run start
nodejs监听端口服务
webhook-server.js (路径:/var/www/)
const http = require('http');
const { exec } = require('child_process');
// 端口号为3000
const PORT = 3000;
const server = http.createServer((req, res) => {
if (req.method === 'POST' && req.url === '/webhook') {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
const payload = JSON.parse(body);
const branch = payload.ref.split('/').pop(); // 获取提交的分支名称
if (branch === 'master') {
exec('/path/to/deploy.sh', (error, stdout, stderr) => {
if (error) {
console.error('Deployment failed:', error);
res.writeHead(500);
res.end('Deployment failed');
} else {
console.log('Deployment successful');
res.writeHead(200);
res.end('Deployment successful');
}
});
} else {
console.log(`Received push event for branch ${branch}. No deployment needed.`);
}
});
} else {
res.writeHead(404);
res.end('Not found');
}
});
server.listen(PORT, () => {
console.log(`Webhook server listening on port ${PORT}`);
});
PM2启动node服务
npm install -g pm2
pm2 start webhook-server.js
- 检查所有运行中的进程:pm2 list
- 停止进程:pm2 stop
- 重启进程:pm2 restart
- 删除进程:pm2 delete
创建WebHooks
gitee为例
- 打开仓库管理-webhooks
- 添加 webhooks
- url:为自己服务器ip或对应域名 + 端口号(3000对应上面node服务监听的端口)+ 路径(就是上面node服务监听的路径/webhook)
- 点击测试
此时测试结果为 Received push event for branch ${branch}. No deployment needed.
因为测试分支不是master
所以可以直接本地电脑修改master代码,然后更新推送上面,pm2 logs -f
实时查看node监听服务的日志,确认是否执行了autoBulid.sh自动重新部署脚本。Deployment successful
就说明执行了。
思考总结
思考:
- 后面具体怎么去优化部署
- 怎么实现同一项目测试服和正式服两个独立环境
- 怎么做多个项目兼容等
总结:
- 这里只是简单基础的gie自动化部署的应用案例!!!
- 想要现实中项目运维那样,还需要不断了解与学习!!!