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

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为例

  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自动化部署的应用案例!!!
  • 想要现实中项目运维那样,还需要不断了解与学习!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473694.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql笔记:23. 在Mac上安装与卸载MySQL

文章目录 下载MySQL安装包1. 打开MySQL官网,点击DOWNLOADS2. 点击GPL Downloads3. 点击MySQL Community Server打开下载页面4. 选择需要的文件进行下载5. ARM or x86 DMGbrewTAR卸载1. 在系统中卸载2. 在终端中卸载 MySQL对Mac电脑的适配十分强大,再加上…

晶圆为什么要抛光?

为什么要把晶圆打磨的这么光滑? 晶圆的最终命运是被切成一枚枚芯片(die),封装在暗无天日的小盒子里,只露出几枚引脚,芯片会看阈值,阻值,电流值,电压值,就是没人看它的颜值,我们在制程中,反复给晶圆打磨抛光,还是为了满足生产中的平坦化需要,尤其是在每次做光刻时…

使用Pygame做一个乒乓球游戏(2)使用精灵重构

本节没有添加新的功能,而是将前面的功能使用精灵类(pygame.sprite.Sprite) 重构。 顺便我们使用图片美化了一下程序。 看到之前的代码,你会发现代码有点混乱,很多地方使用了全局变量(global)。 本节我们将使用类进行重构。 Block(Sprite)…

【phoenix】flink程序执行phoenix,phoenix和flink-sql-connector-hbase包类不兼容

问题报错 Caused by: java.lang.RuntimeException: java.lang.RuntimeException: class org.apache.flink.hbase.shaded.org.apache.hadoop.hbase.client.ClusterStatusListener$MulticastListener not org.apache.hadoop.hbase.client.ClusterStatusListener$Listener如下图&…

基于cnn深度学习的yolov5+pyqt+分类+resnet+骨龄检测系统

往期热门博客项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 YOLOv5与骨龄识别 YOLOv5&a…

NCV7428D15R2G中文资料PDF数据手册参数引脚图图片价格概述参数芯片特性原理

产品概述: NCV7428 是一款系统基础芯片 (SBC),集成了汽车电子控制单元 (ECU) 中常见的功能。NCV7428 为应用微控制器和其他负载提供低电压电源并对其进行监控,包括了一个 LIN 收发器。 产品特性: 控制逻辑3.3 V或5 V VOUT电源&…

(css)步骤条el-steps区分等待、进行中、完成三种状态的图片

(css)步骤条el-steps区分等待、进行中、完成三种状态的图片 效果&#xff1a; <el-steps :active"active" finish-status"success" class"steps"><el-step title"选择.."></el-step><el-step title"..规则&…

【Java】使用 Java 语言实现一个冒泡排序

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章。 这是《Java》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识…

鸿蒙Harmony应用开发—ArkTS-高级组件:@ohos.arkui.advanced.ComposeTitleBar(头像和单双行文本标题栏)

一种普通标题栏&#xff0c;支持设置标题、头像&#xff08;可选&#xff09;和副标题&#xff08;可选&#xff09;&#xff0c;可用于一级页面、二级及其以上界面配置返回键。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角…

Linux CentOS 7.6安装mysql5.7.26详细保姆级教程

一、通过wget下载mysql安装包 1、下载 //进入home目录 cd /home //下载mysql压缩包 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz //解压 tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz //重命名文件夹 mv mys…

【Springboot3+Mybatis】文件上传阿里云OSS 基础管理系统CRUD

文章目录 一、需求&开发流程二、环境搭建&数据库准备三、部门管理四、员工管理4.1 分页(条件)查询4.2 批量删除员工 五、文件上传5.1 介绍5.2 本地存储5.3 阿里云OSS1. 开通OSS2. 创建存储空间Bucket 5.4 OSS快速入门5.5 OSS上传显示文件 六、配置文件6.1 yml配置6.2 C…

【设计模式】Java 设计模式之模板命令模式(Command)

命令模式&#xff08;Command&#xff09;的深入分析与实战解读 一、概述 命令模式是一种将请求封装为对象从而使你可用不同的请求把客户端与接受请求的对象解耦的模式。在命令模式中&#xff0c;命令对象使得发送者与接收者之间解耦&#xff0c;发送者通过命令对象来执行请求…

【NLP】多头注意力(Multi-Head Attention)的概念解析

一. 多头注意力 多头注意力&#xff08;Multi-Head Attention&#xff09;是一种在Transformer模型中被广泛采用的注意力机制扩展形式&#xff0c;它通过并行地运行多个独立的注意力机制来获取输入序列的不同子空间的注意力分布&#xff0c;从而更全面地捕获序列中潜在的多种语…

Linux快速入门,上手开发 01.学习路线

少时曾许凌云志&#xff0c;当取世间第一流 再见少年拉满弓&#xff0c;不惧岁月不飓风 —— 24.3.20 1.Linux的发展历史 2.VM虚拟机的Linux初体验 3.图形化页面设置系统——快速上手 4.命令行操作——向专业前进 5.核心操作命令——必知必会&#xff08;管理企业级权限/定位b…

【LEMONSQUEEZY: 1【mysql写shell】】

前期环境准备 靶机下载地址 https://vulnhub.com/entry/lemonsqueezy-1%2C473/ 信息收集 ┌──(root㉿kali)-[/home/test/桌面/lemmon] └─# nmap -sP 192.168.47.1/24 --min-rate 3333 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-20 14:02 CST Stats: 0:00:06 e…

目标检测——YOLOR算法解读

论文&#xff1a;YOLOR-You Only Learn One Representation: Unifified Network for Multiple Tasks 作者&#xff1a;Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接&#xff1a;https://arxiv.org/abs/2105.04206 代码&#xff1a;https://github.com/WongKinYiu/yolo…

使用ansible批量修改操作系统管理员账号密码

一、ansible server端配置 1、对于Linux主机配置免密登录ssh-copy-id -i ~/.ssh/id_rsa.pub rootremote_ip 2、在/etc/ansible/hosts文件中添加相应主机IP 3、对于Windows主机需要在/etc/ansible/hosts文件中进行以下配置 192.168.83.132 ansible_ssh_useradministrator an…

centos重启防火墙导致docker不可用

重启容器报错 错误原因 docker服务启动时定义的自定义链docker&#xff0c;由于centos7 firewall 被清掉 firewall的底层是使用iptables进行数据过滤&#xff0c;建立在iptables之上&#xff0c;这可能会与 Docker 产生冲突。 当 firewalld 启动或者重启的时候&#xff0c;将…

【大数据】Redis介绍和使用

【大数据】Redis介绍和使用 介绍服务器搭建redis支持的五种数据类型数据类型应用场景总结 介绍 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的基于内存的数据结构存储系统&#xff0c;它提供了丰富的数据结构&#xff08;如字符串、哈希表、列表、集合、…

HTML静态网页成品作业(HTML+CSS)——动漫猫和老鼠网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…