【项目部署】git自动化部署项目

发布于:2024-03-22 ⋅ 阅读:(96) ⋅ 点赞:(0)

前言

本次以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为例

  1. 打开仓库管理-webhooks
  2. 添加 webhooks
  3. url:为自己服务器ip或对应域名 + 端口号(3000对应上面node服务监听的端口)+ 路径(就是上面node服务监听的路径/webhook)
  4. 点击测试
    在这里插入图片描述

此时测试结果为 Received push event for branch ${branch}. No deployment needed.
因为测试分支不是master
所以可以直接本地电脑修改master代码,然后更新推送上面,pm2 logs -f实时查看node监听服务的日志,确认是否执行了autoBulid.sh自动重新部署脚本。Deployment successful就说明执行了。

思考总结

思考:

  • 后面具体怎么去优化部署
  • 怎么实现同一项目测试服和正式服两个独立环境
  • 怎么做多个项目兼容等

总结:

  • 这里只是简单基础的gie自动化部署的应用案例!!!
  • 想要现实中项目运维那样,还需要不断了解与学习!!!
本文含有隐藏内容,请 开通VIP 后查看

微信公众号

今日签到

点亮在社区的每一天
去签到