当前位置: 首页 > news >正文

使用rsync+jenkins实现服务自动部署全流程

项目背景:城市政务云服务器没有上k8s,所有后端服务都是原始方式部署启动 (java -jar xxx.jar),那么有没有方式简化部署难度,实现自动部署?当然是有的,下面详细介绍(以CentOS7环境为例):

一、服务器安装配置rsync

1. 安装rsync

一般服务器上自带的有rsync,怎么查系统自带的有没有rsync以及是哪个版本

[root@he-vm-0000000589 ~]# rpm -qa|grep rsync
rsync-3.1.2-11.el7_9.x86_64

或者使用which命令也行,查看服务器上有没有 rsync命令

[root@he-vm-0000000589 ~]# which rsync
/usr/bin/rsync

若系统没有安装rsync(没有rsync命令),则安装命令如下:

yum -y install rsync

2 被控端(业务节点服务器)上配置rsync

2.1 创建 /etc/rsync.pass 文件

touch /etc/rsync.pass

2.2 编辑 /etc/rsync.pass 

vim /etc/rsync.pass

更改 rsync.pass 用户权限为 600

chmod 600 /etc/rsync.pass

效果如下:

2.3 配置 /etc/rsyncd.conf 文件

PS:/etc/rsyncd.conf 文件内容默认是全部注释了的

vim /etc/rsyncd.conf

log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass
max connections = 0[activity-annual]  # 自定义模块名,填要自动部署的服务名称
path = /data/spring/activity-annual
comment = activity-annual
uid = root
gid = root
port = 873
use chroot = no
read only = no
list = no
timeout = 600
auth users = xx
hosts allow = 10.8.11.240
hosts deny = 0.0.0.0/32[hello-world]  # 自定义模块名,填要自动部署的服务名称
path = /data/spring/hello-world
comment = hello-world
uid = root
gid = root
port = 873
use chroot = no
read only = no
list = no
timeout = 600
auth users = xx
hosts allow = 10.8.11.240
hosts deny = 0.0.0.0/32

上面配置文件,表明允许主服务器 (假设ip为10.8.11.240)访问,rsync同步模块名为[activity-annual] 和 [hello-world],将同步过来的文件分别放入 path指定的目录 /data/spring/activity-annual、/data/spring/hello-world 。如果是多节点部署,则每一台节点服务器都需要进行类似的 rsync 配置,上面的 uid gid 更换成您服务器的相应用户,注意 rsync 要有对被同步目录的操作权限。配置好之后,使用如下命令,开启 rsync 守护进程:

rsync --daemon

3.主控端(jenkins服务器)上配置rsync

创建  /etc/passwd.txt , 文件内写入 认证密码, 注意:要和 从控端的 /etc/rsync.pass 里设置的相对应

touch /etc/passwd.txt && echo admin@789 > /etc/passwd.txt

修改 /etc/passwd.txt 文件权限为 600

chmod 600 /etc/passwd.txt

验证主控端(jenkins服务器)文件到被控端(业务节点服务器)文件同步功能:

在主控端(jenkins服务器)上执行如下命令:

rsync -avz activity-annual.jar xx@10.8.11.248::activity-annual --password-file=/etc/passwd.txt

执行结果如下

执行后,主控端上的activity-annual.jar 文件自动同步到 目标服务器 10.8.11.248 上

4.被控端(业务节点服务器)上创建核心脚本

4.1 在被控端(业务节点服务器)上创建 /etc/systemd/system/jenkins 目录

mkdir /etc/systemd/system/jenkins

4.2在用户根目录下创建并配置 system_add.sh 脚本

核心脚本抽空会放在评论区

核心脚本用途

--- 在 后面 配置jenkins自动部署要用到该核心脚本。

执行核心脚本后会生成两个文件

----- 下班了,晚点补充

二 配置jenkins自动部署

jenkins web端 配置自动部署job

1. New Item 创建一个 Job

可自定义该Job中的参数变量


 

2. 自动部署核心配置

Build Steps 选择 Execute shell

shell脚本如下:

echo ${WORKSPACE}
echo ${JOB_NAME}
context_name=hello-worldwget ${backend_package_url} -O ${context_name}.tar.gz
tar -zxvf ${context_name}.tar.gz
mv ${WORKSPACE}/target/*.jar ${context_name}.jar
chmod -R o+g ${context_name}.jar
jar=${context_name}.jarTIMESTAMP=`date +%Y%m%d_%H%M`
ansible 10.8.11.248 -m shell -a "sh /root/spring_add.sh ${context_name}"
ansible 10.8.11.249 -m shell -a "sh /root/system_add.sh ${context_name}" 
rsync -avz ${jar} xx@10.8.11.248::${context_name} --password-file=/etc/passwd.txt
rsync -avz ${jar} xx@10.8.11.249::${context_name} --password-file=/etc/passwd.txtsleep 10
ansible 10.8.11.248 -m systemd -a "name=${context_name} state=restarted"
ansible 10.8.11.249 -m systemd -a "name=${context_name} state=restarted"

点击Build with Parameters,输入后端包下载地址,然后点“Build”按钮,即可自动打包,发布到业务节点服务器

相关文章:

使用rsync+jenkins实现服务自动部署全流程

项目背景:城市政务云服务器没有上k8s,所有后端服务都是原始方式部署启动 (java -jar xxx.jar),那么有没有方式简化部署难度,实现自动部署?当然是有的,下面详细介绍(以Cen…...

python 实现decision tree决策树算法

decision tree决策树算法介绍 决策树算法(Decision Tree Algorithm)是一种基于输入特征对实例进行分类的树结构模型,主要用于分类和回归任务。其基本原理是根据训练数据的特征属性和类别标签之间的关系,生成一个能够对新样本进行…...

前端大模型入门:实战篇之Vue3+Antdv+transformers+本地模型实现增强搜索

本文将之前的文章,实现一个场景的实战应用,包含代码等内容。利用纯前端实现增强的列表搜索,抛弃字符串匹配,目标是使用番茄关键字可以搜索到西红柿 1 准备工作 1.1 了解llm和web开发 web端的ai开发参考 前端大模型入门&#xff…...

《向量数据库指南》——Fivetran 的 Partner SDK:构建自定义连接器和目标

哈哈,说到 Fivetran 的 Partner SDK,这可真是个好东西啊!作为向量数据库领域的“老司机”,我今天就来给大家详细讲讲这个 SDK 的厉害之处,以及如何用它来构建自定义连接器和目标,实现与 Fivetran 自动化数据移动平台的无缝集成。 一、Fivetran Partner SDK:开启自定义连…...

微信小程序的 button 标签的边框如何去除?

目录 问题描述: 问题原因: 解决办法: 方案一 方案二 问题描述: 实际开发中会发现这个 button 自带有样式,当背景颜色设置为白色的时候还有一个黑色的边框,刚开始那个边框怎么都去不掉 无法去除的边框…...

20240926 关于Goland处理wsl-GOROOT原理猜测

GOROOT的原理 go sdk与java jdk类似,是go的编译工具链的集合。 在windows上,我们通过在系统环境变量中添加GOROOT并设置为go sdk地址,使得命令行可以访问到go sdk并执行go test、build等命令,这样设置的变量是全局生效的&#x…...

Anki 学习日记 - 卡片模版 - 单选ABCD(纯操作)

摘要:在不懂前端语言的情况下自定义卡片模版,卡片模版的字段 安装(官网):Anki - powerful, intelligent flashcards (ankiweb.net) 一、在哪能修改卡片模版 管理笔记模板 - > 添加 -> 问答题 -> 设置名称 二…...

钉钉x昇腾:用AI一体机撬动企业数字资产智能化

“走红”近两年后,大模型正在加速走进千行万业。 由于大模型的主要模态是文字和图片,恰好是数字化办公最基础的内容要素,办公于是成了离AI最近的场景。 公文写作、表格生成、提炼大纲、文本翻译、代码润色、数据统计、智能问答……越来越多…...

【C/C++】 秋招常考面试题最全总结(让你有一种相见恨晚的感觉)

目录 1.C程序编译链接过程 2.浅拷贝和move有区别吗 3.深拷贝和浅拷贝的区别 4.空类的大小 5.类的继承有几种方式,区别是什么? 六、extern 关键字的作用 七、static关键字的作用 八、指针和引用的区别 九、C内存分配方式 十、结构体对齐…...

CSS面试真题 part1

CSS面试真题 part1 1、说说你对盒子模型的理解2、谈谈你对BFC的理解3、什么是响应式设计?响应式设计的基本原理是什么?如何做?4、元素水平垂直居中的方法有哪些?如果元素不定宽高呢?5、如何实现两栏布局,右…...

针对考研的C语言学习(定制化快速掌握重点5)

顺序表 特点: 写代码主要就是增删改查!!! 写代码的边界性非常重要以及考研插入和删除的位置都是从1开始,而数组下标是从0开始 【注】下标和位置的关系 线性表最重要的是插入和删除会涉及边界问题以及判断是否合法 …...

构建高效房屋租赁系统:Spring Boot应用

1 绪论 1.1 研究背景 中国的科技的不断进步,计算机发展也慢慢的越来越成熟,人们对计算机也是越来越更加的依赖,科研、教育慢慢用于计算机进行管理。从第一台计算机的产生,到现在计算机已经发展到我们无法想象。给我们的生活改变很…...

学习单片机编程和硬件设计步骤

学习单片机编程和硬件设计可以分为几个步骤: 理解基本概念:首先需要了解单片机的基本概念、硬件结构和工作原理 。 选择开发平台:选择一个合适的单片机系列作为起点,如Arduino、ESP8266/ESP32或STM32系列 。 准备工具和环境&…...

.net Framework 4.6 WebAPI 使用Hangfire

C# 使用 Hangfire 第一章 .net Framework 4.6 WebAPI 使用Hangfire 文章目录 C# 使用 Hangfire前言一、hangfire是什么?二、hangfire的特点三、.net Framework 中hangfire的使用方法第一步:创建WebAPI控制器第二步:添加nuget包第三步 创建startup类新建项目startup类Startu…...

两个向量所在平面的法线,外积,叉积,行列式

偶尔在一个数学题里面看到求两向量所在平面的法线,常规方法可以通过法线与两向量垂直这一特点,列两个方程求解;另外一种方法可以通过求解两个向量的叉积,用矩阵行列式 (determinant) 的方式,之前还没见过,在…...

C++之 友元重载 以及最常用的几种友元函数

在之前的友元中就曾经讲过,我们为了去访问修改私有成员中的数据时,只能通过公有的办法去进行访问操作,非常的局限。所以C引用了友元函数,只要加上friend关键字,C的这个类,会自动把这个函数的权限拉到类内&a…...

动态规划(3)——dp多状态问题Ⅰ

题一.按摩师(LeetCode) 题目描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集…...

在Mac电脑上安装adb环境

当你在命令行输入 adb version 或adb devices, 报错:zsh: command not found: adb ,那么说明你的 Mac 上没有安装 ADB(Android Debug Bridge),或者它没有添加到你的路径中。你可以按照以下步骤安装和配置 ADB&#xff…...

分糖果C++

题目&#xff1a; 样例解释&#xff1a; 样例1解释 拿 k20 块糖放入篮子里。 篮子里现在糖果数 20≥n7&#xff0c;因此所有小朋友获得一块糖&#xff1b; 篮子里现在糖果数变成 13≥n7&#xff0c;因此所有小朋友获得一块糖&#xff1b; 篮子里现在糖果数变成 6<n7&#xf…...

Spring中如何为静态变量注入值

在 Spring 中&#xff0c;如果使用 Value 注解注入值&#xff0c;不能将其应用于 static 字段。Spring 只能为实例变量注入值&#xff0c;不能直接对静态变量进行注入。 使用 PostConstruct 初始化&#xff1a; 如果确实需要在静态上下文中使用该值&#xff0c;可以使用 Post…...

FPGA LVDS输入作为模拟比较器的原理、设计与工程实践

1. 项目概述&#xff1a;当LVDS输入遇上模拟电压 最近几年&#xff0c;各大FPGA厂商都在力推自家的“模拟-数字转换器&#xff08;ADC&#xff09;IP核”&#xff0c;宣传其如何集成便利、性能优越。这让我这个老工程师不禁琢磨&#xff0c;这些IP核的底层原理究竟是什么&#…...

3分钟掌握跨平台鼠标连点器:免费开源自动化工具快速上手指南

3分钟掌握跨平台鼠标连点器&#xff1a;免费开源自动化工具快速上手指南 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#…...

终极Windows安卓应用安装指南:告别模拟器,拥抱轻量级体验

终极Windows安卓应用安装指南&#xff1a;告别模拟器&#xff0c;拥抱轻量级体验 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重的安卓模拟器&#x…...

工业DC-DC电源模块性能选型解析|钡特电源 VB15-48S24MD 与 URB4824YMD-15WR3 封装互通

在工业控制、通信设备、仪器仪表等领域&#xff0c;工业 DC-DC 模块电源作为核心供电单元&#xff0c;其稳定性、兼容性与性价比直接影响系统整体可靠性。随着国产化进程加速&#xff0c;国产工业电源模块在技术、品质上已达到国际先进水平&#xff0c;成为硬件工程师选型的重要…...

超长上下文处理能力翻倍,响应速度提升47%,API成本下降22%:Claude 3.5 Sonnet新功能落地实战手册,仅限本周内有效

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude 3.5 Sonnet新功能概览与核心突破 Anthropic 正式发布的 Claude 3.5 Sonnet 在推理效率、多模态理解边界与开发者集成体验上实现了显著跃迁。相比前代&#xff0c;其上下文窗口稳定支持 200K tok…...

OpenFOAM实战:在interFoam中植入多孔介质源项模拟复杂固壁

1. 多孔介质模拟的工程需求与原理 在流体力学仿真中&#xff0c;我们经常遇到需要处理复杂几何边界的情况。传统方法是通过精细的网格划分来精确描述固体边界&#xff0c;但这会带来两个主要问题&#xff1a;一是计算成本急剧上升&#xff0c;二是对于动态变化的边界&#xff0…...

从零到图像显示:用海康MVS SDK写一个最简单的C++相机采集程序

从零到图像显示&#xff1a;用海康MVS SDK写一个最简单的C相机采集程序 第一次接触工业相机开发时&#xff0c;最让人头疼的往往不是复杂的算法&#xff0c;而是如何让相机简单地显示一张图像。本文将带你用最直接的方式&#xff0c;在30分钟内完成从设备连接到实时显示的完整流…...

从零封装Cesium测量工具:我踩过的3个坑和性能优化心得(鼠标事件、坐标拾取、内存泄漏)

从零封装Cesium测量工具&#xff1a;我踩过的3个坑和性能优化心得 第一次在项目中集成Cesium测量工具时&#xff0c;我天真地以为这不过是调用几个API的简单工作。直到用户反馈地图越来越卡、测量结果偶尔出现诡异偏差时&#xff0c;我才意识到自己掉进了多少陷阱。本文将分享三…...

从“能用”到“可靠”:基于SonarQube与Jenkins的代码质量防线构建实战

当测试覆盖率不再只是一串数字&#xff0c;而是合并代码前的“一票否决权” 1. 为什么你的“质量门禁”只是个摆设&#xff1f; 在很多团队的CI/CD流水线中&#xff0c;SonarQube的集成往往停留在“能跑就行”的阶段。流水线里确实有代码扫描这一步&#xff0c;日志里也打印出…...

别再只会拖模块了!手把手教你用Simulink封装打造自己的‘智能积木’

从零构建你的Simulink智能积木库&#xff1a;封装技术实战指南 在工程建模领域&#xff0c;Simulink就像数字世界的乐高积木箱&#xff0c;但大多数用户只停留在拖拽现成模块的初级阶段。真正的高手都掌握了一项核心技能——模块封装。这就像把一堆散乱的乐高零件组装成功能完整…...