代码提交后服务器项目同步更新

一、简介

最近在服务器上部署了一个node后台项目,每次发布都需要更新一下服务器上的后台文件;这样来回操作有些许麻烦。为此想要服务器端后台项目连接代码仓库,监听代码仓库的更新情况;如果有更新则自动执行git pull同步最新代码。

二、实现原理

明确需求后,需要先对问题进行分解;具体需要做哪些事情:

  1. 监听代码仓库更新时机
  2. 代码更新后通知服务器更新
  3. 服务器监听代码仓库消息
  4. 服务器接收消息后进行重新部署

分解后我们发现难点在于代码仓库如何与服务器进行通信,代码仓库需要告诉服务器我更新了代码;服务器接收到消息后来同步更新。

代码仓库提供了一个通信方式WebHooks来满足咱们的通信需求。

三、宝塔服务端配置WebHook

3.1 服务器安装git

配置webhook之前需要检查服务端是否安装git,需要通过git去更新代码;

// 输入git查看是否有安装
// 没有就需要先安装git
yum install git
// 生成git公钥
ssh-keygen -t rsa
// 查看公钥信息,可以将公钥保存到代码仓库中
cd ~/.ssh
ls
cat id_rsa.pub

3.2 服务器拉取仓库代码

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global credential.helper store //会生成.gitconfig 的文件
cat .gitconfig   //如果报错: No such file or directory,就用下一行的代码
cat ~/.gitconfig  //显示内容// 进入项目文件夹
cd /www/wwwroot
// 克隆代码仓库
git clone 仓库地址

3.3 安装webhook

打开软件商店,安装webhook

在这里插入图片描述

3.4 添加webhook

在这里插入图片描述

脚本设置:

#!/bin/bashecho ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
#git项目路径
gitPath="/www/wwwroot/项目文件夹"
#git仓库地址配置
gitHttp="仓库地址" 
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; thencd $gitPath#判断是否存在git目录if [ ! -d ".git" ]; thenecho "在该目录下克隆 git"sudo git clone $gitHttp gittempsudo mv gittemp/.git .sudo rm -rf gittempfiecho "拉取最新的项目文件"#sudo git reset --hard origin/mastersudo git pull        sudo chown -R www:www $gitPathecho "代码同步成功"exit
elseecho "该项目路径不存在"echo "新建项目目录"mkdir $gitPathcd $gitPath#判断是否存在git目录if [ ! -d ".git" ]; thenecho "在该目录下克隆 git"sudo git clone $gitHttp gittempsudo mv gittemp/.git .sudo rm -rf gittempfiecho "拉取最新的项目文件"#sudo git reset --hard origin/mastersudo git pullsudo chown -R www:www $gitPathecho "代码同步成功"exit
fi

在这里插入图片描述

3.5 自定义脚本

如何不想要去软件商店去下载webhook,也可以自定义node脚本生成一个post请求与代码仓库的webhook进行同步;

自定义脚本:

const express = require('express');
const bodyParser = require('body-parser');
const child_process = require('child_process');const app = express();app.use(bodyParser.json());app.post('/webhook', (req, res) => {// 假设要更新的项目路径const projectPath = '/www/wwwroot/项目文件夹名';// 进入项目目录并执行 git pullchild_process.exec(`cd ${projectPath} && git pull`, (error, stdout, stderr) => {if (error) {console.error(`拉取失败: ${error}`);res.status(500).send('执行失败');} else {console.log(`代码更新成功: ${stdout}`);res.sendStatus(200);}});});const port = 9000;
app.listen(port, (e) => {console.log(`Server running at ${port}`);
});

四、代码仓库的WebHooks

4.1 WebHooks

WebHook 功能是帮助用户 push 代码后,自动回调一个您设定的 http 地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序。
简单来说就是代码仓库允许配置一个POST请求地址,通过发送POST请求来通知服务器代码更新的消息;而这个POST请求地址就需要服务器生成。

宝塔面板中也可以去软件商店去下载WebHook,这个我们下面介绍。

4.2 设置WebHooks

进入到代码仓库,点击管理–>管理配置中的WebHooks–>添加webHook
在这里插入图片描述
在这里插入图片描述

4.3 配置验证

在这里插入图片描述

五、总结

最终我们通过webhook来实现服务器项目与代码仓库同步更新,总结一下实现步骤:

  1. 服务端先安装git
  2. 通过git克隆代码仓库到服务端
  3. 服务端下载webhook添加监听脚本或者自定义脚本
  4. 在代码仓库中配置对应的webhook请求地址

简单描述就是服务端A小朋友想要代码仓库B小朋友辅导作业,所以A把手机号给B,让B信息学习新知识后赶紧打电话跟它说。当B更新后就立马打电话给A,A收到消息后立马来学习了0_0

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络编程(16)——asio多线程模型IOServicePool

目录 十六、day16 1. 什么是多线程? 2. IOServicePool实现 3. 服务器修改 4. 客户端修改 5. 总结 1. boost::asio::io_context::work的作用? 十六、day16 在之前的设计中,我们对 ASIO 的使用都是采用单线程模式。为了提升网络 I/O 并…

持续科技创新 高德亮相2024中国测绘地理信息科技年会

图为博览会期间, 自然资源部党组成员、副部长刘国洪前往高德企业展台参观。 10月15日,2024中国测绘地理信息科学技术年会暨中国测绘地理信息技术装备博览会在郑州召开。作为国内领先的地图厂商,高德地图凭借高精度高动态导航地图技术应用受邀参会。 本…

一文详解流处理、批处理和流批一体

一、流处理 定义:流处理是一种对实时流入的数据进行连续处理的方式,流式数据处理中的数据集是不固定和无边界的。 特点: 1.实时性:能够在数据产生的瞬间就对其进行处理,具有非常高的实时性。这使得企业可以及时响应…

光伏项目开发360°管控,规避潜在风险

光伏项目建设在国家的大力支持下如雨后春笋般涌现,投资者对回报率和项目质量的要求越来越高。在这样的背景下,光伏项目全生命周期管理愈发重要。 一、业主沟通开发 积极和业主进行沟通,了解其合作意愿。向业主科普安装光伏的好处&#xff0c…

[权威出版|稳定检索]2024年信息控制、电气与智慧交通国际会议(ICEIT 2024)

2024年信息控制、电气与智慧交通国际会议 2024 International Conference on Information Control, Electrical and Intelligent Transportation 【1】大会信息 会议名称:2024年信息控制、电气与智慧交通国际会议 会议简称:ICEIT 2024 大会时间&#x…

Open-WebUI

Open-WebUI特点⭐ ️直观的界面:聊天界面从 ChatGPT 中汲取灵感,确保用户友好的体验。响应式设计:在桌面和移动设备上享受无缝体验。⚡快速响应:享受快速响应的性能。轻松设置:使用 Docker 或 Kubernetes(…

101、QT摄像头录制视频问题

视频和音频录制类QMediaRecorder QMediaRecorder 通过摄像头和音频输入设备进行录像。 注意: 使用Qt多媒体模块的摄像头相关类无法在Windows平台上进行视频录制,只能进行静态图片抓取但是在Linux平台上可以实现静态图片抓取和视频录制。 Qt多媒体模块的功能实现是依…

msql事务隔离级别 线上问题

1. 对应代码 解决方式: 在事务隔离级别为可重复读(RR)时,数据库确实通常会记录当前数据的快照。 在可重复读隔离级别下,事务在执行期间看到的数据是事务开始时的数据快照,即使其他事务对数据进行了修改&am…

实战篇:(六)创建属于自己的 Vue 3 组件库:主题切换与样式管理

创建属于自己的 Vue 3 组件库:主题切换与样式管理 构建一个主题化的 Vue 3 组件库需要多个步骤,包括项目的初始化、组件的创建、主题的实现和样式的管理。以下是详细的步骤和实现代码。 1. 初始化项目 使用 Vite 创建 Vue 3 项目: npm cre…

Java基础14-网络编程

十四、网络编程 java.net.*包下提供了网络编程的解决方案! 基本的通信架构 基本的通信架构有2种形式: CS架构( Client客户端/Server服务端)、BS架构(Browser浏 览器/Server服务端)。无论是CS架构,还是BS架构的软件都必须依赖网络编程!。 1、网络通信的三要素 网络通…

堡垒机安装、链接服务器、数据库

堡垒机 JumpServer - 开源堡垒机 - 官网 下载安装包 jumpserver jumpserver.org (.org开源) 1、将安装包上传至虚拟机 (1)rz上传 (2)lftp登录 put下载 2、解压 [roothostname ~]# tar -xf jumpserver-ce-v4.2.0-x86_64.t…

认识Java的异常

异常机制 异常机制指的是程序出现错误时,程序的处理方式。 程序的错误分为三种: 编译错误:由于没有遵循对于语言的语法规则,编辑器可以自动发现并提示的错误位置和原因。逻辑错误:程序没有按照预期的顺序执行。运行…

Reality Capture 软件安装 附下载链接

Reality Capture 软件安装 文章目录 Reality Capture 软件安装一、Reality Capture v1.4汉化版安装包下载并解压二、Epic Games Launcher安装三、设置路径并安装![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f077210990674d9fa9c10b52338b52fe.png)四、启动Epic Ga…

第十四届中国国际健康产品展览会在沪举办,无限未来品牌大放异彩

2024 年,第十四届中国国际健康产品展览会、2024 亚洲天然及营养保健品展在上海成功举办。 此次展会聚焦天然及营养保健品领域,来自香港的 INFINITE FUTURE 无限未来品牌脱颖而出。无限未来将先进的营养科学与尖端数字技术融合,开发专业级营养…

Stylized Far East 古代国风建筑城镇宫殿场景模型

古代国风建筑城镇宫殿场景模型。内容: -演示场景(截图) - 种类繁多的建筑,如宫殿、商店、神社、房屋、餐馆、宝塔、寺庙等 -带有塔楼、门楼的模块化城堡墙 -树木、岩石、悬崖和其他自然资产 -传统装饰,如纸灯笼、绘画、瓷器等 - 城镇道具,如手推车、栅栏、板条箱、市场、…

【JavaEE】——TCP应答报文机制,超时重传机制

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:TCP协议(面试重点重点) 1:报头长度 2:…

今年双十一可以买啥?2024双十一不用做功课闭眼入的品牌好物分享!

今年的双十一购物狂欢节即将来临,许多消费者已经开始规划他们的购物清单,期待在这个一年一度的促销盛会上抢购到心仪的商品。2024年的双十一,你无需再做繁琐的功课,因为这里将为你分享一些闭眼入的品牌好物,让你轻松享…

unity Gpu优化

不一样的视角,深度解读unity性能优化。unity性能优化,unity内存优化,cpu优化,gpu优化,资源优化,资源包、资源去重优化,ugui优化。 gpu优化静态批处理静态批处理原理规则静态合批的原理静态合批的…

【Sceneform-EQR】(手势优化)通过手势事件实现在AR/VR等三维场景中的控制模型旋转、平移与缩放

在上一篇文档中,我们实现了通过手势控制模型节点的旋转、缩放和平移。现在本文将介绍如何优化上一篇做的手势控制器,从而实现更好的跟手效果。 相关链接:【Sceneform-EQR】(手势控制器实现)通过手势事件实现在AR/VR等…

网络安全中的RCE命令执行漏洞----入门小白必看

RCE命令执行&代码执行漏洞 RCE命令执行漏洞 RCE漏洞简介 RCE(remote code/command execute) 远程代码/命令执行漏洞 RCE漏洞是两个漏洞: 代码执行漏洞 # 针对后端语言!命令执行漏洞 # 针对系统! 如何产生 在 Web应用中有时候程序员为了考虑灵活性、简洁性…