当前位置 : 主页 > 操作系统 > centos >

Jenkins 系统升级

来源:互联网 收集:自由互联 发布时间:2022-06-20
前言 官方介绍说明,Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。 这是一款开源 CI/CD 工具软件,用于自动化各种任务,包括构建、测试、监控和部署软件。Jenkins 支持各种运行

前言

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

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

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

Jenkins 系统升级_linux


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

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

Jenkins 系统升级_jar_02

正式的官方网站如下

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

Jenkins 系统升级_java_03

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


系统平台

AlmaLinux 8.5

Jenkins 系统升级_linux_04

$ 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 系统升级_linux_05

jenkins 有很多种安装方式,我直接下载的 jenkins.war 包进行安装部署。

Jenkins 系统升级_jar_06


系统启动

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_07

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

打开浏览器访问系统。


Jenkins 系统升级_linux_08


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


Jenkins 系统升级_jar_09

显示是 Jenkins 中文社区,Jenkins 2.289.3

Jenkins 系统升级_jar_10


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


Jenkins 系统升级_linux_11

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

Jenkins 系统升级_java_12

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

Jenkins 系统升级_java_13

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

Jenkins 系统升级_jar_14


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

Jenkins 系统升级_java_15

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

看看官网的最新版本页面

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

Jenkins 系统升级_linux_16


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




网友评论