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

【Jenkins】02 - 自动化部署配置

【Jenkins】02 - 自动化部署配置

文章目录

  • 【Jenkins】02 - 自动化部署配置
    • 一:拉取和打包
    • 二:post操作-部署到测试服务器
    • 三:超时机制
    • 四:pre操作-运行前的清理

01中一切安装就绪,准备进行自动化部署试验

在这里插入图片描述

一:拉取和打包

前置条件,安装了git和maven插件

manage jenkins -> manage plugins -> 搜索git -> git(install without restart)

manage jenkins -> manage plugins -> 搜索maven -> maven integration(install without restart)

1️⃣ Jenkins操作界面中,新建一个item

在这里插入图片描述

2️⃣ 配置git部分

在这里插入图片描述

在这里插入图片描述

3️⃣ maven配置

在这里插入图片描述

4️⃣ 指定pom的位置

在这里插入图片描述

点击运行之后会打相应的可执行jar包到target下

二:post操作-部署到测试服务器

在这里插入图片描述

1️⃣ 在测试服务器上(服务器3)安装jdk

假设测试服务器的ip是192.168.44.104, 已经安装了jdk1.8

2️⃣ jenkins安装publish插件

在这里插入图片描述

在这里插入图片描述

3️⃣ 全局配置ssh

在这里插入图片描述

在pushlist over ssh中选择新增一个ssh【就是测试服务器的信息】,填写完成之后保存

在这里插入图片描述

4️⃣ post step填写

回到之前项目的构建配置,选择post step的操作,添加自动将jar放到测试服务器并运行

在这里插入图片描述

选择好刚才创建的ssh服务器,选择每次要传过去的Jar[可以使用通配符]

  • 其中source files指定的是jar的通配符
  • remote prefix是前缀
  • remote directory指定的是目标接收到jar包之后,保存在哪里
  • Exec command表示的是jar包在测试服务器后保存了启动的命令

下面的jar包在测试服务器上的位置是:/root/xxoo/demo-1/target/demo-1.0.jar, 注意不同的路径位置对应下图的分布情况

在这里插入图片描述

🎉 在这里可能启动不成功,是因为重启执行jar包的虚拟机或者开启新终端后,/etc/profile里的环境变量未生效

  • 一劳永逸方案为在~/.bashrc文件里添加source /etc/profile
  • 或者在jenkins配置里面执行java -jar命令的上面一行添加source /etc/profile

三:超时机制

输出命令时一定要注意不要让窗口卡主,不然Jenkins会认为认为一直没完成

更新exec command,指定nohub日志的输出位置【例如是mylog.log】

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方

  • 标准输入(stdin):代码为0,使用<或<<;

  • 标准输出(stdout):代码为1,使用>或>>;

  • 标准错误输出(stderr):代码为2,使用2>或2>>

nohub java -jar /root/xxoo/demo*.jar >mylog.log 2>&1 &
# >mylog.log -> 将日志放到mylog.log中,>表示写入到... >>表示追加到..
# 2>&1 -> 标准写法,1表示标准输出,2表示标准错误输出,意思是将输出和错误输出都放在mylog.log中

在刚才配置执行命令的下面有一个高级...按钮,进入之后,可以配置时间【默认是两分钟】

在这里插入图片描述

四:pre操作-运行前的清理

主要是为了kill之前正在运行的进程

在这里插入图片描述

在这里插入图片描述

# x.sh,没有参数版本,直接就是./x.sh, 后面不接参数,写死删除的是那个进程#!/bin/bash
# ps -ef -> 找到所有的进程
# grep demo -> 过滤出来包含demo字符串的进程
# grep 'java -jar' -> 在上一次过滤的基础上再次过滤含有'java -jar'的
# awk '{printf $2}' -> 打印输出第二个参数,【pid】
pid=`ps -ef | grep demo | grep 'javar -jar' | awk '{printf $2}'`
echo $pid  # 打印一下
if [-z $pid];thenecho "process can't find";elseecho "process stoping...";kill -9 $pid # 杀掉之前的java进程
ficheck=`ps -ef | grep -w $pid | grep java`
if [-z $check];thenecho "demo pid:$pid is stop"elseecho "demo stop failed"
fi
# 有参数版本 -> ./x.sh demo
#!/bin/bash 
appname=$1 
pid=`ps -ef | grep $appname | grep 'javar -jar' | awk '{printf $2}'`
echo $pid  # 打印一下
if [-z $pid];thenecho "$appname process can't find";elseecho "$appname process stoping...";kill -9 $pid # 杀掉之前的java进程
ficheck=`ps -ef | grep -w $pid | grep java`
if [-z $check];thenecho "$appname pid:$pid is stop"elseecho "$appname stop failed"
fi
http://www.xdnf.cn/news/17996.html

相关文章:

  • 【Linux系列】如何在 Linux 服务器上快速获取公网
  • PAT 1068 Find More Coins
  • 补充:用信号量实现前驱关系
  • 【架构师干货】数据库管理系统
  • JavaWeb前端(HTML,CSS具体案例)
  • 火狐(Mozilla Firefox)浏览器离线安装包下载
  • 【JavaEE】多线程 -- 单例模式
  • 2025:AI狂飙下的焦虑与追问
  • SWE-bench:真实世界软件工程任务的“试金石”
  • GANs生成对抗网络生成手写数字的Pytorch实现
  • 原型和原型链的问题
  • mac电脑开发嵌入式基于Clion(stm32CubeMX)
  • ThinkPHP8学习篇(三):控制器
  • 《解构WebSocket断网重连:指数退避算法的前端工业级实践指南》
  • pair之于vector、queue(vector<pair<int,int>>)
  • Yolov模型的演变
  • K8S集群环境搭建
  • 【LeetCode 热题 100】(八)二叉树
  • 数据结构——栈和队列oj练习
  • 深度解析 Spring Bean 生命周期
  • 【网络安全】Webshell的绕过——绕过动态检测引擎WAF-缓存绕过(Hash碰撞)
  • 《P4180 [BJWC2010] 严格次小生成树》
  • MySQL 插入数据提示字段超出范围?一招解决 DECIMAL 类型踩坑
  • 安卓11 12系统修改定制化_____修改运营商版本安装特定应用时的默认规则
  • 机器学习相关算法:回溯算法 贪心算法 回归算法(线性回归) 算法超参数 多项式时间 朴素贝叶斯分类算法
  • 一文速通Python并行计算:14 Python异步编程-协程的管理和调度
  • C语言:文件操作详解
  • 后量子密码算法SLH-DSA介绍及开源代码实现
  • Java8~Java21重要新特性
  • C++ 最短路Dijkstra