Jenkins安装与配置
Jenkins使用前提
需要本地有Java11版本,测试服务器上是否已经安装了Java,可以用下面这条命令
java -version需要注意的是,如果你下载的Jenkins版本是2.164以下的,那么Java8版本的应该也是可以的。
Jenkins的安装
1)下载Jenkins
Jenkins的安装其实可以直接去官方网站就可以看到官方推荐的安装方式了:
https://pkg.jenkins.io/redhat-stable/
https://pkg.jenkins.io/debian-stable/

也可以根据下面的命令来进行安装(适用Ubuntu系统):
- 添加 Jenkins 仓库密钥:
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key- 添加Jenkins资源仓库地址:
echo "deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null- 更新并安装 Jenkins:
# 更新软件包列表
sudo apt update
# 查看可用版本
sudo apt-cache madison jenkins
# 安装指定版本(重要:不同的Jenkins版本需要的Java版本不一样,建议安装指定版本的Jenkins)
sudo apt install jenkins=2.414.3
# 安装最新版本
sudo apt install jenkins除了命令行操作下载外,直接在官网上手动下载对应操作系统的软件包也是推荐的选择 官网下载地址
安装后服务器可能会提示需要重启,可直接按ESC跳过即可。

2)修改Jenkins端口
跟着上面的步骤安装成功后我们再来修改一下jenkins的启动端口,由于jenkins的默认端口是8080,可能会跟其他应用冲突,而且暴露在8080端口上也不太安全,所以这里我们还是选择修改一下:
# CentOS/redhat
vim /etc/sysconfig/jenkins
# Ubuntu/debian
vim /etc/default/jenskins将 HTTP_PORT=8080 改为 HTTP_PORT=新端口

如端口修改后仍然为8080,则需要在 jenkins 加载目录中修改端口
# 进入目录
cd /usr/lib/systemd/system
vim jenkins.service
# 或者
vim /usr/lib/systemd/system/jenkins.service
# 修改为想要的端口
Environment="JENKINS_PORT=18080"
# 重新加载配置文件
systemctl daemon-reload
3)启动Jenkins
输入如下命令,即可启动Jenkins
service jenkins start设置允许开机启动(在线安装的时候会自动设置)- 这个还没试用
sudo chkconfig jenkins on4)重启Jenkins
输入如下命令,即可启动Jenkins
service jenkins restart5)停止Jenkins
service jenkins stop或使用systemctl命令
sudo systemctl stop jenkins6)访问Jenkins
此处假定 jenkins端口为 8080
http://localhost:8080/


关闭Jenkins
http://localhost:8080/exit重启Jenkies
http://localhost:8080/restart重新加载配置信息
http://localhost:8080/reloadJenkins设置中文
1)安装Locale和Chinese插件
2)重启Jenkins,使用插件生效
3)设置为中文
进入 系统管理 > 系统配置
找到Locale选项,输入zh_CN,勾选下面的选项,最后点击保存即可

注:最后发现一个问题,只要重启jenkins,就会导致设置的中文失效,需要再次设置才能恢复!
Jenkins启动异常
1)Java环境变量
如果你的JDK的存放路径和Jenkins默认配置的jdk路径不符的话,上面的命令是会执行失败的:

遇到这种情况,我们需要修改一下Jenkins的配置文件,加入我们本地的jdk路径
查看当前java版本,OpenJDK 和 Oracle Java 是最主要的两个不同的 Java 实现,具体参见 Ubuntu安装Java
java -version
安装路径如下:
- OpenJDK 11 安装在:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java - OpenJDK 8 安装在:
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
检查java环境变量
echo $JAVA_HOME设置环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java
修改Jenkins的配置文件/etc/init.d/jenkins,找到一行JAVA=$(command -v "${COMMAND_NAME}"),把这行直接注释了,然后添加一行 JAVA=/usr/lib/jvm/java-11-openjdk-amd64/bin/java,保存退出
vim /etc/init.d/jenkins
执行命令:systemctl daemon-reload重新加载
systemctl daemon-reload重启Jenkins
systemctl restart jenkins.service查看Jenkins状态
systemctl status jenkins.service2)版本兼容性
官网查找版本发现最新版本需要使用Java17 or Java21,已经不支持Java11了…… 所以要么使用旧版本的Jenkins,要么使用新版本的Java

3)检查端口是否被占用
启动jenkins报错 Failed to start Jetty或Failed to bind to 0.0.0.0/0.0.0.0:8080或Address already in use
确保端口 8080(默认 Jenkins 端口)未被其他应用程序占用。你可以使用以下命令检查端口占用情况(在 Linux/Unix 系统上):
sudo netstat -tuln | grep 8080如果发现端口被占用,你可以选择关闭占用端口的应用程序,或者将 Jenkins 配置为使用不同的端口。
Jenkins启动慢
现象一:Jenkins启动时提示timeout

现象二:Jenkins启动后,访问界面一直显示Please wait while Jenkins is getting ready to work ...

原因:因为Jenkins的默认更新镜像用的国外的镜像,我们只需要换一个源,不使用官网的源即可。
1)找到 jenkins工作目录
查找文件 hudson.model.UpdateCenter.xml
find / -name *.UpdateCenter.xml
2)编辑文件
将https://updates.jenkins.io/update-center.json内容为国内地址
以下是一些常用的国内 Jenkins 插件更新源地址:
- 清华大学:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 华为开源镜像站:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json
- 腾讯云:https://mirrors.cloud.tencent.com/jenkins/updates/update-center.json
- 中国科学技术大学:https://mirrors.ustc.edu.cn/jenkins/updates/update-center.json
- 北京理工大学:https://mirror.bit.edu.cn/jenkins/updates/update-center.json
测试下来就华为的能用,但最好不要直接用,直接用对应的是最新版本的Jenkins,应根据当前版本,替换为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-stable-{$VERSION}/update-center.json,其中{$VERSION}是当前Jenkins的版本。
我的是2.414.3,实际地址为https://mirrors.huaweicloud.com/jenkins/updates/dynamic-stable-2.414.3/update-center.json
更新方式一:修改hudson.model.UpdateCenter.xml文件
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
更新方式二:在界面上直接修改

3)重启Jenkins
重启后就可以正常访问了
签名验证失败
更换国内源后仍然无法访问,出现There were errors checking the update sites: Signature verification failed in update site

禁用jenkins签名验证
Jenkins 提供了禁用更新站点签名验证的选项。可以通过以下步骤禁用签名验证
- 登录 Jenkins,进入 Manage Jenkins > Script Console
- 控制台输入以下脚本

执行完成后有Result返回信息

重启 Jenkins 以使更改生效
service jenkins restart或
http://localhost:8080/restart再次进入即可正常使用插件功能了

Jenkins离线
登录后,提示该Jenkins实例似乎已离线

解决上述问题方法:
修改/var/lib/jenkins/updates/default.json
jenkins在下载插件之前会先检查网络连接,其会读取这个文件中的网址。默认是访问谷歌,所以将图下的google改为www.baidu.com即可,更改完重启服务。
发现/var/lib/jenkins目录下竟然没有updates文件夹…… ps:该方案无法执行,实际上还是镜像地址的问题,请再检查镜像地址
点击配置代理,再返回后,页面又变为了新手入门

叉掉这个窗口,即可直接进入首页

Jenkins的卸载
如果所有方法都失败,可以考虑备份配置后彻底重新安装 Jenkins:
| 步骤 | 命令 | 作用说明 | 注意事項 |
|---|---|---|---|
| 1. 停止服务 | sudo systemctl stop jenkins | 停止正在运行的 Jenkins 服务 | 确保服务已完全停止 |
| 2. 卸载软件包 | sudo apt purge jenkins | 核心步骤:卸载软件并删除配置文件 | 使用 purge 而非 remove 以清除配置 |
| 3. 清理依赖 | sudo apt autoremove | 自动移除不再需要的依赖包 | 可选,但推荐执行以保持系统整洁 |
| 4. 手动删除数据 | sudo rm -rf /var/lib/jenkins | 删除 Jenkins 工作目录(包含 jobs、插件、配置) | ⚠️ 警告:此操作不可逆!请先备份! |
sudo rm -rf /var/log/jenkins | 删除 Jenkins 日志目录 | ||
sudo rm -rf /var/cache/jenkins | 删除 Jenkins 缓存目录 | ||
| 5. 删除用户 | sudo userdel jenkins | 删除 Jenkins 系统用户 | 可选,如果确定不再使用 |
限制内存
设置JVM堆内存(此方法验证无效)
具体分为以下几步:
找到配置文件 打开Ubuntu系统下Jenkins的默认配置文件
/etc/default/jenkins。编辑配置 在配置文件中,你需要修改
JAVA_ARGS这个变量。设置堆内存大小:通过
-Xms(初始堆大小)和-Xmx(最大堆大小)来指定。例如,下面的配置会设置初始堆内存为1GB,最大堆内存为4GB。bashJAVA_ARGS="-Xms1024m -Xmx4096m"你也可以使用其他变量,如
JENKINS_JAVA_OPTIONS,效果是相同的。一个常见的优化做法:将
-Xms和-Xmx的值设为相同。这样可以避免JVM在运行时频繁地申请和释放内存,从而减少性能抖动。
重启并验证
保存文件后,重启Jenkins服务使配置生效:
bashsudo systemctl restart jenkins验证参数是否生效:
bashps -ef | grep jenkins在输出的进程信息中,检查是否包含了你刚刚设置的
-Xms和-Xmx参数。
根本原因分析
- Jenkins版本更新:自 Jenkins 2.332.1 版本起,官方已经弃用并停止读取
/etc/default/jenkins配置文件,改用systemd服务进行管理。 - 配置变量名错误:在systemd覆盖文件(
override.conf)中,用于JVM内存的变量名可能不是JAVA_ARGS,而应该是JAVA_OPTS或JENKINS_JAVA_OPTIONS。
解决方案:使用正确的 systemd 配置
请务必使用 systemctl edit jenkins 命令来创建或编辑覆盖文件,这是最不容易出错的方法。
打开编辑器 在终端中执行以下命令,这会自动创建或编辑
/etc/systemd/system/jenkins.service.d/override.conf文件:bashsudo systemctl edit jenkins写入正确配置 在编辑器中完全删除原有内容,并粘贴以下配置:
ini[Service] # 设置JVM内存和headless模式 Environment="JAVA_OPTS=-Djava.awt.headless=true -Xms2048m -Xmx2048m" # 设置Jenkins监听端口 Environment="JENKINS_PORT=18080"说明:
JAVA_OPTS:这是现代Jenkins systemd服务实际读取的JVM参数变量名。-Xms2048m -Xmx2048m:建议将最小与最大堆内存设为相同值,以减少JVM在运行时频繁地申请和释放内存所带来的性能开销。-Djava.awt.headless=true:此参数必须保留,以确保在没有图形界面的服务器环境下Jenkins的功能能正常运行。
重新加载并重启服务 保存文件并退出编辑器后,务必执行以下命令让配置生效:
bashsudo systemctl daemon-reload sudo systemctl restart jenkins
最终验证
重启后,再次使用验证命令检查:
ps -ef | grep jenkins如果配置成功,你将在输出中看到清晰的 -Xms2048m -Xmx2048m 参数。
# 预期的正确输出
jenkins xxxxx 1 ... /usr/bin/java -Djava.awt.headless=true -Xms2048m -Xmx2048m -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=18080