因为一些需求需要迁移之前使用的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是我创建的账号名)
参考https://www.cnblogs.com/soultraitor/p/16654030.html,由于内网软件源上有这两个软件,因此可以直接安装,否则需要更换外网软件源,并开启代理安装
注:JDK 10在执行java -version
时也会被认为是JDK 11,但实际无法启动Jenkins,需要安装真正的JDK 11
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 -jar /home/soul/jenkins.war >/dev/null 2>&1 & fi elif [ "$1" = "stop" ]; then exec ps -ef | grep jenkins | 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协议头
首先在/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
将服务设为开机启动,重启机器即可
工具位置中,JDK指定路径为/usr/lib/jvm/java-8-openjdk-amd64/jre