在Ubuntu机器上使用war包安装Jenkins

因为一些需求需要迁移之前使用的Jenkins,原来是按照官方文档使用apt方式安装的,这次搬迁后的机器由于默认不通外网(可以通过代理走外网),因此趁此机会,尝试改用war包方式安装

环境目标

系统Ubuntu 18.04,默认JDK设为8,以JDK 11启动Jenkins主节点,以JDK 8启动Jenkins子节点

注:实际子节点为另一台机器,默认设为8是因为机器上其他应用需要运行在该环境下,以JDK 8启动节点是因为自动化代码不支持JDK 11

安装步骤

安装包准备

由于Jenkins最后一版支持Java 8的版本为2.356,因此从https://get.jenkins.io/war/2.356/下载该包并上传至服务器/home/soul目录下(soul是我创建的账号名)

Java环境安装

参考https://www.cnblogs.com/soultraitor/p/16654030.html,由于内网软件源上有这两个软件,因此可以直接安装,否则需要更换外网软件源,并开启代理安装

注:JDK 10在执行java -version时也会被认为是JDK 11,但实际无法启动Jenkins,需要安装真正的JDK 11

Jenkins启动

war包安装启动可参考官方文档:https://www.jenkins.io/doc/book/installing/war-file/,安装后默认安装位置为/home/soul/.jenkins目录

由于直接启动后,关闭终端就会导致进程终止,因此需要使用nohup进行后台启动,同时为了方便启动/终止Jenkins进程,这里使用脚本来实现

在jenkins.war同目录下新建jenkins.sh文件

#!/bin/bash
 
pid=$(ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}')
if [ "$1" = "start" ]; then
    if [ -n "$pid" ]; then
        echo 'jenkins is running...'
    else
        ### java启动服务 配置java安装根路径,和启动war包存的根路径
        nohup /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8 -jar /home/soul/jenkins.war >/dev/null 2>&1 &
    fi
elif [ "$1" = "stop" ]; then
    exec ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}' | xargs kill -9
    echo 'jenkins is stopped...'
else
    echo "Please input like this:"./jenkins.sh start" or "./jenkins.sh stop""
fi

之后即可使用./jenkins.sh start./jenkins.sh stop来启停Jenkins

首次启动进行初始化配置时,由于无法连接外网,因此会下载不了插件,此时可选择配置代理,之后即可正常下载插件

注:代理地址不要带http协议头

设置开机启动Jenkins

首先在/etc/systemd/system目录下创建rc-local.service文件

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
  
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
  
[Install]
WantedBy=multi-user.target

然后在/etc下创建rc.local文件,并设置权限sudo chmod +x rc.local,文件内容如下,中间注释以下,exit 0以上的部分是启动所需命令,意为使用soul账号执行启动命令(否则会用root账号启动,与原先soul启动的不是同一个Jenkins)

#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
 
/bin/su - soul -c "/home/soul/jenkins.sh start"
 
exit 0

最后执行sudo systemctl enable rc-local将服务设为开机启动,重启机器即可

Jenkins子节点配置

工具位置中,JDK指定路径为/usr/lib/jvm/java-8-openjdk-amd64/jre

posted @ 2022-09-04 14:42  SoulTraitor  阅读(880)  评论(0编辑  收藏  举报