jenkins--构建传输jar包后启动java服务
Posted hwjShl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins--构建传输jar包后启动java服务相关的知识,希望对你有一定的参考价值。
jenkins--构建传输jar包后启动java服务
目标:针对单体java服务
前置条件:jdk1.8 日志切割cronolog
创建server.sh脚本文件
#! /bin/bash
JAR_PATH="/data/forwarder" # 文件目录
JAR_FILE="ruoyi-admin.jar" # 文件名
LOG_PATH="/data/forwarder/logs" #cronolog 日志切割路径
LOG_FILE="$LOG_PATH/console-%Y-%m-%d.out" #cronolog 日志切割生成文件
# 停止 Java 服务
echo "Stopping Java service..."
PID=$(ps -ef | grep $JAR_FILE | grep -v grep | awk \'print $2\')
if [ -n "$PID" ]; then
kill $PID
fi
sleep 5
# 启动 Java 服务
echo "Starting Java service..."
source /etc/profile #jenkins默认是用非登录模式来执行shell命令,所有没有加载环境变量配置文件。
nohup java -jar $JAR_PATH/$JAR_FILE 2>&1 | cronolog $LOG_FILE >> /dev/null 2>&1 &
#/dev/null 中,这是一个特殊的文件,它会将所有数据直接丢弃。
停止java服务
输出 "Stopping Java service..." 字符串。
使用 ps -ef 命令列出当前系统上所有进程的详细信息。
使用 grep 命令过滤出包含 $JAR_FILE 字符串的进程。
使用 grep -v grep 命令将过滤出来的进程中排除包含 "grep" 字符串的进程(即过滤掉 grep $JAR_FILE 这条命令本身)。
使用 awk \'print $2\' 命令提取非grep进程的 PID。
如果 PID 存在,则使用 kill 命令杀死该进程。
为了确保进程已经停止,等待 5 秒钟。
2>&1、>>、最后一个& 的作用
2>&1 是将标准错误输出(stderr)重定向到标准输出(stdout),也就是说,它将标准错误输出的内容和标准输出合并为一个流,一起输出到管道中或者输出到文件。
>> 是将输出重定向到指定文件的末尾,并在不覆盖已有内容的情况下将输出内容追加到该文件中。
最后一个 & 表示将进程放到后台执行,在命令行中使用 & 可以让该命令在后台运行,控制台可以继续输入其他命令,而不必等待该命令执行完成。如果该命令是一个长时间运行的进程并且需要在后台持续运行,则需要使用 nohup 命令来使进程在退出 shell 后仍然运行。
jenkins调用脚本
文件全路径 sh /data/forwarder/ruoyi-admin.jar
cronolog 查看
进入日志目录/data/forwarder/logs
tail -f -n 500 console-2023-05-25.out #实时查看日志文件最近500条记录
命令行执行jenkins,构建job(可传递参数)
背景| 组内做UI测试,需要每天晚上执行一遍jenkins任务,jenkins任务本身是参数化构建的。但是因为jenkins本身的定时执行没有办法指定特殊的参数,所以考虑使用命令行方式启动jenkins
第一步:下载jenkins-cli.jar,查看帮助文档
不同版本的jenkins有自己对应命令行版本jar,所以最好从jenkins机上命令行说明页下载jar
访问jenkins的命令行说明页:http://192.168.111.111:8080/jenkins/cli
该页面可下载jenkins-cli.jar,并且介绍了一些命令
1.查看jenkins-cli.jar命令的帮助
java -jar jenkins-cli.jar -s http://192.168.111.111:8080/jenkins/ -help
如果想查看具体的某个jenkins-cli命令,可以在-help加上command
例如:查看build的具体使用方法
java -jar jenkins-cli.jar -s http://192.168.111.111:8080/jenkins/ help build
注意:最好用jenkins的ip加端口访问,我这里用域名访问会超时
第二步.使用build命令构建一个JOB
java -jar jenkins-cli.jar -s http://jenkinsurl build JOBNAME -p tag=xxx --username xxx --password xxx
说明:
1.build后面直接跟JOB的名字
2.-p后面跟参数化构建的参数,使用key=value格式。如果有多个参数就写多个-p
3.—username和--password提供jenkins的账号密码
例如,执行jenkins的命令如下:
java -jar jenkins-cli.jar -s http://1192.168.111.111:8080/jenkins/ build UITest -p tag=20170922 -p ifRunUI=true -p --username tester --password 123456
build的使用方法:
JOB : Name of the job to build
-c : Check for SCM changes before starting the build, and if there‘s no
change, exit without doing a build
-f : Follow the build progress. Like -s only interrupts are not passed
through to the build.
-p : Specify the build parameters in the key=value format.
-s : Wait until the completion/abortion of the command. Interrupts are passed
through to the build.
-v : Prints out the console output of the build. Use with -s
-w : Wait until the start of the command
[root([email protected])@bjm6-193-96 script]# java -jar jenkins-cli.
其他:获得历史构建的参数
在命令行执行时,参数我们可能需要历史构建的参数
获取上次构建结果:
curl "http://192.168.111.111:8080/jenkins/view/app/job/JOBNAME/lastBuild/api/xml”
然后可以解析结果,可以通过expr在shell中解析,获得需要的参数,例如获得tag:
expr "$result" : ‘.*<name>tag</name><value>\([a-zA-Z0-9_-]*\)</value></parameter>‘
说明:$result为请求上次构建的结果,tag这里匹配的是字母数字和下划线中横线
更多获取构建结果的文章参考:http://blog.csdn.net/ljj_9/article/details/70270977
以上是关于jenkins--构建传输jar包后启动java服务的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins踩坑系列--你试过linux主机ssh登录windows,启动java进程吗,来试试吧