我自横刀向天笑,去留肝胆两昆仑。这篇文章主要讲述Jenkins 系统升级相关的知识,希望能为你提供帮助。
前言官方介绍说明,Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。
这是一款开源 CI/CD 工具软件,用于自动化各种任务,包括构建、测试、监控和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 java 程序。
??https://www.oschina.net/p/jenkins??
还有个中国定制版说明,主要是本地化定制服务。
??https://www.oschina.net/p/jenkins-zh??
正式的官方网站如下
??http://www.jenkins.io/??
官网上可以下载正式发布的所有安装镜像包版本,按你需要进行下载安装即可。
系统平台AlmaLinux 8.5
$ hostnamectl
Static hostname: localhost.localdomain
Transient hostname: 192.168.109.141
Icon name: computer-vm
Chassis: vm
Machine ID: 8166aec4bed44a88947523231a677fbd
Boot ID: 969f7c0fcfbe4065afa9b93e0617a7d3
Virtualization: vmware
Operating System: AlmaLinux 8.5 (Arctic Sphynx)
CPE OS Name: cpe:/o:almalinux:almalinux:8::baseos
Kernel: Linux 4.18.0-348.el8.x86_64
Architecture: x86-64
$
官网安装说明
jenkins 有很多种安装方式,我直接下载的 jenkins.war 包进行安装部署。
【Jenkins 系统升级】
系统启动war 包可以直接执行启动,启动命令:$ java -jar jenkins.war
执行启动后,默认的服务端口是 8080 端口,打开浏览器访问 jenkins 服务即可。
这样直接启动也没有问题,只是启动的窗口不能关闭,关闭了 jenkins 的服务也就结束了,系统也就无法正常访问了。
我们应该在这个启动指令上继续深入完善一下,比如执行下面的指令:
$
$ nohup java -jar jenkins.war --httpPort=8080 >
>
log 2>
&
1 &
$
详细参数讲解
1、nohup#后台启动
2、--httpPort#自定义端口
3、>
>
log#以追加的方式记录日志
4、2>
&
1#标准异常输出 1:标准输出, 2>
&
1 输出记录到log文件中
5、&
#后台启动方式
也可以增加如下的参数执行启动:
$
$ nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8080 >
>
log 2>
&
1 &
$
详细参数讲解
-Dhudson.util.ProcessTree.disable=true#在启动的时候禁止 jenkins 杀死衍生进程,值为 true 将禁用此特性。
因为 jenkins 默认会在 Build 结束后 Kill 掉所有的衍生进程,如果想要避免这种情况,就需要添加上面的参数来避免。
讲解分析了启动指令,下面就启动 jenkins 服务,看看结果。
可以看到启动的 jenkins 服务进程相关信息,我设置了内存大小,进程直接就显示出来了
java -server -Xms2048m -Xmx2048m -XX:NewSize=1500m 。
打开浏览器访问系统。
可以看到我安装部署的 Jenkins 版本是 2.289.3 版本。
显示是 Jenkins 中文社区,Jenkins 2.289.3
点击系统管理,可以看到有提示信息,新版本的 Jenkins (2.332.3)
可以下载或自动升级,既然系统提供了自动升级,那就点击一下自动升级吧。
可以看到系统正在进行安装更新,等待一会时间,就可以看到系统安装更新完成。
勾选重启 Jenkins 复选框,系统将重新启动,显示如下。
重新启动完成,显示如下安装更新的新版本信息 Jenkins 2.332.3
点击系统管理,查看关于 Jenkins ,可以看到系统已自动升级到最新版本。
此次,系统自动升级成功,分享给各位,希望对各位有所帮助。
看看官网的最新版本页面
??https://ci.jenkins.io/??
下面分享3个自动启动脚本,按实际修改即可直接使用。
代码1
#!/bin/bash -x
#set -ex
#get cur_time
cur_time=$(date +%F-%H%M%S)
month=$(date +%Y%m)
WORK_HOME=$(pwd)
PID=`ps -ef | grep jenkins.war | grep -v grep | awk print $2`
if [[ "" !="$PID" ]];
then
echo "killing jenkins : $PID"
kill -9 $PID
fi
sleep 1
LOGS_DIR=/home/scm/jenkins/logs
MAIN_JAR="-jar jenkins.war --httpPort=19090"
JAVA_ARGS="-server -Xms2048m -Xmx2048m -XX:NewSize=1500m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGCDetails -XX:+PrintHeapAtGC-XX:ThreadStackSize=512 -Xloggc:$LOGS_DIR/gc.log"
nohup java $JAVA_ARGS $MAIN_JAR 1>
>
$LOGS_DIR/stout.log 2>
>
$LOGS_DIR/error.log &
echo "startup jenkins ..."
代码2
#!/bin/bash
# 在执行过程中若遇到使用了未定义的变量或命令返回值为非零,将直接报错退出
set -eu
# 检查参数个数
if [ "$#" -lt 1 ];
then
echo " 脚本使用示例: sh jenkins.sh start|stop|restart "
exit
fi
# 获取脚本第一个参数
APP_OPT=$1
# 端口
APP_PORT=19090
# 名称
APP_NAME=jenkins
# jar名 | war名
APP_JAR=$APP_NAME.war
# 程序根目录
APP_JAR_HOME=.
# 日志名
APP_LOG_NAME=application-jenkins
# 日志根目录
APP_LOG_HOME=.
# 程序运行参数
JAVA_OPTS="--httpPort=$APP_PORT"
echo "本次操作服务名:[$APP_NAME]"
echo "本次操作选择:[$APP_OPT]"
# 停止
function stop()
echo "<
-------------------------------------->
"
echo "[$APP_NAME] ... stop ..."
# 查看该jar进程
pid=`ps -ef | grep $APP_NAME | grep -v grep | awk print $2`
echo "[$APP_NAME] pid="$pid
# 存在则kill,不存在打印一下吧
if [ "$pid" ];
then
kill -9 $pid
# 检查kill是否成功
if [ "$?" -eq 0 ];
then
echo "[$APP_NAME] stop success"
else
echo "[$APP_NAME] stop fail"
fi
else
echo "[$APP_NAME] 进程不存在"
fi
# 运行
function start()
echo "<
-------------------------------------->
"
echo "[$APP_NAME] ... start ..."
cd $APP_JAR_HOME
echo "当前路径:`pwd`"
# 赋予可读可写可执行权限
chmod 777 $APP_JAR
echo "启动命令: nohup java -jar $APP_JAR $JAVA_OPTS >
>
$APP_LOG_HOME/$APP_LOG_NAME.log 2>
&
1 &
"
nohup java -jar $APP_JAR $JAVA_OPTS >
>
$APP_LOG_HOME/$APP_LOG_NAME.log 2>
&
1 &
if [ "$?" -eq 0 ];
then
echo "[$APP_NAME] start success"
else
echo "[$APP_NAME] start fail"
fi
# 重启
function restart()
echo "<
-------------------------------------->
"
echo "[$APP_NAME] ... restart ..."
stop
start
# 多分支条件判断执行参数
case "$APP_OPT" in
"stop")
stop
;
;
"start")
start
;
;
"restart")
restart
;
;
*)
echo " 提示:不支持参数 命令 ->
$APP_OPT"
;
;
esac
代码3
#!/bin/sh
#prefix=/home/scm/jenkins
#nohup $prefix/jenkins.sh >
>
$prefix/jenkins.log 2>
&
1 &
JENKINS_ROOT=/home/scm/jenkins
JENKINS_NAME=jenkins.war
#停止方法
stop()
echo "Stoping $JENKINS_NAME "
ps -ef|grep $JENKINS_NAME |awk print $2|while read pid
do
kill -9 $pid
echo " $pid kill"
done
case "$1" in
start)
echo "Starting $JENKINS_NAME "
nohup $JENKINS_ROOT/jenkins.sh >
>
java -jar $JENKINS_NAME/jenkins.log 2>
&
1 &
;
;
stop)
stop
;
;
restart)
stop
start
;
;
status)
ps -ef|grep $JENKINS_NAME
;
;
*)
printf Usage: %s start|stop|restart|status\\n "$prog"
exit 1
;
;
esac
推荐阅读
- ElasticSearch 5.0+Windows和Linux下各版本下载
- 在linux系统如何安装zip/unzip
- #yyds干货盘点# 解决剑指offer(连续子数组的最大和)
- ACL2022挖宝 CMR
- uniapp小程序新版授权登录
- LibreCAD+Mingw编译记录
- plugin cannot be loaded for module “QtQuick“ && Could not load the Qt platform plugin “windows“
- Java知识体系Java并发编程进阶,多线程和锁底层原理探究
- eclipse有时候自动提示这个错误,百度了下也是懵逼,求大神