Linux下安装Jenkins
前言
Jenkins 是一个开源的持续集成工具,广泛应用于自动化构建、测试和部署。本文将详细介绍如何在 Linux 系统中基于 JDK8 安装 Jenkins,包括所需命令和相关配置,帮助您快速搭建一个功能完善的 Jenkins 环境。
Jenkins官网地址
Jenkins 插件地址
Jenkins英文官网 war包最新版本下载,主要版本使用2.346.1
或2.346.3
Jenkins中文官网 war包最新版本下载,主要版本使用2.346.1
或2.346.3
Jenkins官网 rpm包下载,主要版本使用jenkins-2.346-1.1.noarch.rpm
ps:官网中有两个版本支线,Weekly
周更版本 和 LTS
长期成熟稳定支持版本,主要使用稳定的 LTS版本
如图所示,非常经典的版本2.346.1
,这个版本同时支持 JDK8
、JDK11
、JDK17
,使用的最广泛,也意味着坑最多
环境准备
- 操作系统: Linux CentOS
- Java 环境: JDK 8
- Jenkins版本: jenkins-2.346.3(支持JDK 8)、jenkins-2.479.2(支持JDK 17)
- Jenkins端口:9090
检查环境
- 更新系统
首先,更新系统包管理器,以确保软件的最新性
1
sudo yum update -y
- 检查并安装
JDK 8
如果没有安装,可以参考【Linux下安装JDK8】
1
java -version
方式一:war包安装启动
- 下载
Jenkins
安装包前往Jenkins官网下载
war包
,下载完成后将war包
丢到服务器上,博主这里默认丢/usrlocal/jenkins
目录下 - 启动 Jenkins
--httpPort=9090
为端口号,可自行修改。ps:记得端口不要忘记放开1
nohup java -jar /home/jenkins/jenkins.war --httpPort=9090 > /home/jenkins/jenkins.log &
- 查看日志
jenkins.log中有admin的登录密码,这个一定要记住!!!
方式二:rpm包安装启动
rmp包相对于war包安装,多了一些配置文件,例如:/etc/sysconfig/jenkins
/etc/init.d/jenkins
- 下载并上传rpm安装包
【官方RPM包下载】
下载完成后将rpm包
丢到服务器上,博主这里默认丢/usrlocal/jenkins
目录下1
2mkdir /usr/local/jenkins
cd /usrlocal/jenkins - 安装rpm包
1
rpm -ivh jenkins-2.346-1.1.noarch.rpm
- 修改Jenkins配置,修改端口号
1
vim /etc/sysconfig/jenkins
1
2JENKINS_USER="jenkins"
JENKINS_PORT="9090" 修改/etc/init.d/jenkins文件,配置jdk安装目录
1
2
3
4
5
6查询jdk目录,例如:/usr/java/jdk1.8.0_401/bin/java
whereis java
找到candidates变量,修改jenkins中的jdk目录
vim /etc/init.d/jenkins
重新加载配置文件
systemctl daemon-reload关键配置项应包括以下内容(可以根据需要调整):
1
2
3
4JENKINS_HOME="/var/lib/jenkins"
JENKINS_PORT="9090"
JENKINS_USER="jenkins"
JENKINS_JAVA_CMD="/usr/java/jdk1.8.0_401/bin/java"启动Jenkins
1
2sudo systemctl start jenkins
sudo systemctl status jenkins
方式三:兼容JDK17安装启动
- 下载
Jenkins
安装包最初服务器上的JDK版本是
JDK 8
,Jenkins插件基本都用不了,所以博主打算兼容JDK 17
版本
思路:由于服务器还有一些JDK 8
的项目,默认环境变量还是使用JDK 8
,只有在启动Jenkins
时,使用JDK 17
。这也就意味着服务器上同时解压出来两个版本的JDK(JDK 8
和JDK 17
)
ps:分别将JDK 8
和JDK 17
解压到/usr/java
目录下
前往【Jenkins官网】下载war包
下载完成后将war包
丢到服务器上,博主这里默认丢/usrlocal/jenkins
目录下如果每次都手动切换JDK环境变量会很麻烦,所以需要写一个shell脚本进行自动化切换,并且输出log日志
同时博主又为了启动过程美观,添加了进度条,让用户知道Jenkins是否已经启动成功 - 新建shell启动脚本
修改start_jenkins.sh
内容如下1
2cd /usr/local/jenkins
sudo nano start_jenkins.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39!/bin/bash
设置启动路径
START_PATH=$(pwd) # 当前工作路径
设置日志文件路径
LOG_FILE="$START_PATH/jenkins.log"
临时设置 JDK 17 路径
export JAVA_HOME=/usr/java/jdk-17.0.13
export PATH=$JAVA_HOME/bin:$PATH
启动 Jenkins,并将日志输出重定向到 jenkins.log 文件
echo "正在启动 Jenkins JDK 17..." | tee -a "$LOG_FILE"
java -jar /usr/local/jenkins/jenkins-2.463.war --httpPort=9090 >> "$LOG_FILE" 2>&1 &
获取 Jenkins 进程的 PID
JENKINS_PID=$!
显示进度条的函数
show_progress() {
local duration=$1
local interval=1
local progress=0
echo -n "等待Jenkins启动"
while [ $progress -lt $duration ]; do
sleep $interval
progress=$((progress + interval))
echo -n "#"
done
echo " 完成!"
}
设置等待时间(假设 Jenkins 启动时间为 30 秒,调整为实际启动时间)
WAIT_TIME=30
显示等待进度条
show_progress $WAIT_TIME
启动完成后,切换回 JDK 8
echo "正在切换 JDK 8..." | tee -a "$LOG_FILE"
export JAVA_HOME=/usr/java/jdk1.8.0_401
export PATH=$JAVA_HOME/bin:$PATH
打印当前使用的 Java 版本,并记录到日志文件
echo "当前JDK版本: $(java -version)" | tee -a "$LOG_FILE"
等待 Jenkins 进程结束
wait $JENKINS_PID - 启动shell脚本
1
2cd /usr/local/jenkins
./start_jenkins.sh
访问 Jenkins
默认访问地址:http://你的IP地址:9090
ps:首次登录时,需要输入管理员账号和密码。账户是admin
,获取密码需要下面命令从服务器获取初始密码
1 | sudo cat /var/lib/jenkins/secrets/initialAdminPassword |
将显示的密码粘贴到浏览器中完成登录,并根据向导设置 Jenkins。
如果文件丢失或者无法访问,你可以尝试重新生成 Jenkins 的管理员密码
你可以通过删除 Jenkins 数据目录来强制 Jenkins 重置,并生成新的管理员密码。删除 /root/.jenkins 目录后,重新启动 Jenkins
1 | sudo rm -rf /root/.jenkins |
配置防火墙(如适用)
默认情况下,Jenkins 使用端口 8080
。确保此端口未被占用,并配置防火墙以允许外部访问,博主默认是9090
了
1 | sudo firewall-cmd --permanent --add-port=9090/tcp |
卸载清空 Jenkins
- 停止 Jenkins 服务
1
2
3
4查看服务
ps -ef|grep jenkins
停掉进程
kill -9 XXX - 查找安装目录
1
find / -name "jenkins*"
- 删掉相关目录
1
2
3
4
5
6
7
8删掉相关安装目录
rm -rf /root/.jenkins/
删掉war包
rm -rf /webapps/jenkinsapp/
删掉剩余相关
rm -rf /usr/lib/firewalld/services/jenkins.xml
rm -rf /var/cache/yum/x86_64/7/jenkins
rm -f /var/lib/yum/repos/x86_64/7/jenkins - 确认已完全删除
1
find / -name "jenkins*"
安装插件
配置中文界面
- 安装插件:
Locale
和Chinese
、Locale - 重启生效
安装和配置SSH
- 进入 Jenkins 插件管理页面
- 登录 Jenkins 管理控制台。点击
Manage Jenkins
。选择Manage Plugins
。 - 在
Available
标签下搜索SSH Plugin
。勾选SSH Plugin
并点击Install without restart
进行安装。安装完成后,可以选择立即重启Jenkins
使插件生效,或稍后重启。在使用私钥配置时,注意下流程:
- 在Jenkins服务器生成密钥对
ssh-keygen -m PEM -t rsa -b 4096
,一般会在/root/.ssh
生成 私钥id_rsa
和 公钥id_rsa.pub
文件。 - 在Jenkins服务器执行
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@目标服务器ip地址
将公钥复制到目标服务器(其他服务器)。 - 进入
Dashboard > Manage Jenkins > System > SSH Servers
,配置name
、hostname
、username
、Remote Directory
,点击高级
,将秘钥
或秘钥路径
填进对应的位置
- 私钥:保密,用于自己身份认证。
- 公钥:公开,用于配置在远程服务器上,允许你通过私钥登录。
如下图所示,在验证用户密码连接时成功,但使用
ssh私钥连接
则提示下面这个解决方案:向
目标服务器
推送Jenkins服务器
的公钥
,例如在Jenkins服务器
上执行下面命令:1
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@目标服务器ip地址
- 在Jenkins服务器生成密钥对