当前位置:   article > 正文

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

webhook自动化部署

前言

本次以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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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}`);
});

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

PM2启动node服务

npm install -g pm2
pm2 start webhook-server.js
  • 1
  • 2
  • 检查所有运行中的进程: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自动化部署的应用案例!!!
  • 想要现实中项目运维那样,还需要不断了解与学习!!!
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/488139
推荐阅读
相关标签
  

闽ICP备14008679号