Jenkins 系统升级

Posted wst021sh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins 系统升级相关的知识,希望对你有一定的参考价值。

前言

官方介绍说明,Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。

这是一款开源 CI/CD 工具软件,用于自动化各种任务,包括构建、测试、监控和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

​https://www.oschina.net/p/jenkins​

Jenkins


还有个中国定制版说明,主要是本地化定制服务。

​https://www.oschina.net/p/jenkins-zh​

Jenkins

正式的官方网站如下

​http://www.jenkins.io/​

Jenkins

官网上可以下载正式发布的所有安装镜像包版本,按你需要进行下载安装即可。


系统平台

AlmaLinux 8.5

Jenkins

$ 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 有很多种安装方式,我直接下载的 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

可以看到启动的 jenkins 服务进程相关信息,我设置了内存大小,进程直接就显示出来了  java -server -Xms2048m -Xmx2048m -XX:NewSize=1500m 。

打开浏览器访问系统。


Jenkins


可以看到我安装部署的 Jenkins 版本是 2.289.3 版本。


Jenkins

显示是 Jenkins 中文社区,Jenkins 2.289.3

Jenkins


点击系统管理,可以看到有提示信息,新版本的 Jenkins (2.332.3)  可以下载或自动升级,既然系统提供了自动升级,那就点击一下自动升级吧。


Jenkins

可以看到系统正在进行安装更新,等待一会时间,就可以看到系统安装更新完成。

Jenkins

勾选重启 Jenkins 复选框,系统将重新启动,显示如下。

Jenkins

重新启动完成,显示如下安装更新的新版本信息 Jenkins 2.332.3

Jenkins


点击系统管理,查看关于 Jenkins ,可以看到系统已自动升级到最新版本。

Jenkins

此次,系统自动升级成功,分享给各位,希望对各位有所帮助。

看看官网的最新版本页面

​https://ci.jenkins.io/​

Jenkins


下面分享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




以上是关于Jenkins 系统升级的主要内容,如果未能解决你的问题,请参考以下文章

联想g400配置参数

在Jenkins的帮助下让我们的应用CI与CD

如何从ubuntu删除jenkins

Jenkins基础系统之更换镜像源

Jenkins 系统升级

升级Jenkins版本