Skip to content

Jenkins安装与配置 ​

Jenkins使用前提 ​

需要本地有Java11版本,测试服务器上是否已经安装了Java,可以用下面这条命令

bash
java -version

需要注意的是,如果你下载的Jenkins版本是2.164以下的,那么Java8版本的应该也是可以的。

Jenkins的安装 ​

1)下载Jenkins ​

Jenkins的安装其实可以直接去官方网站就可以看到官方推荐的安装方式了:

https://pkg.jenkins.io/redhat-stable/

https://pkg.jenkins.io/debian-stable/

image-20250905210617510

也可以根据下面的命令来进行安装(适用Ubuntu系统):

  • 添加 Jenkins 仓库密钥:
bash
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc \
    https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
  • 添加Jenkins资源仓库地址:
bash
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:
bash
# 更新软件包列表
sudo apt update
# 查看可用版本
sudo apt-cache madison jenkins
# 安装指定版本(重要:不同的Jenkins版本需要的Java版本不一样,建议安装指定版本的Jenkins)
sudo apt install jenkins=2.414.3
# 安装最新版本
sudo apt install jenkins

除了命令行操作下载外,直接在官网上手动下载对应操作系统的软件包也是推荐的选择 官网下载地址

安装后服务器可能会提示需要重启,可直接按ESC跳过即可。

image-20250905212042055

2)修改Jenkins端口 ​

跟着上面的步骤安装成功后我们再来修改一下jenkins的启动端口,由于jenkins的默认端口是8080,可能会跟其他应用冲突,而且暴露在8080端口上也不太安全,所以这里我们还是选择修改一下:

bash
# CentOS/redhat
vim /etc/sysconfig/jenkins
# Ubuntu/debian
vim /etc/default/jenskins

将 HTTP_PORT=8080 改为 HTTP_PORT=新端口

image-20250905212745564

如端口修改后仍然为8080,则需要在 jenkins 加载目录中修改端口

bash
# 进入目录
cd /usr/lib/systemd/system
vim jenkins.service
# 或者
vim /usr/lib/systemd/system/jenkins.service

# 修改为想要的端口
Environment="JENKINS_PORT=18080"

# 重新加载配置文件
systemctl daemon-reload

image-20250906104917499

3)启动Jenkins ​

输入如下命令,即可启动Jenkins

bash
service jenkins start

设置允许开机启动(在线安装的时候会自动设置)- 这个还没试用

bash
sudo chkconfig jenkins on

4)重启Jenkins ​

输入如下命令,即可启动Jenkins

bash
service jenkins restart

5)停止Jenkins ​

bash
service jenkins stop

或使用systemctl命令

bash
sudo systemctl stop jenkins

6)访问Jenkins ​

此处假定 jenkins端口为 8080

http://localhost:8080/

image-20250906112857585

image-20250906121043740

image-20250906121257315

关闭Jenkins

http://localhost:8080/exit

重启Jenkies

http://localhost:8080/restart

重新加载配置信息

http://localhost:8080/reload

Jenkins设置中文 ​

1)安装Locale和Chinese插件

2)重启Jenkins,使用插件生效

3)设置为中文

进入 系统管理 > 系统配置

找到Locale选项,输入zh_CN,勾选下面的选项,最后点击保存即可

image-20250906142253229

注:最后发现一个问题,只要重启jenkins,就会导致设置的中文失效,需要再次设置才能恢复!

Jenkins启动异常 ​

1)Java环境变量 ​

如果你的JDK的存放路径和Jenkins默认配置的jdk路径不符的话,上面的命令是会执行失败的:

image-20250905213716499

遇到这种情况,我们需要修改一下Jenkins的配置文件,加入我们本地的jdk路径

查看当前java版本,OpenJDK 和 Oracle Java 是最主要的两个不同的 Java 实现,具体参见 Ubuntu安装Java

bash
java -version

image-20250905215112644

安装路径如下:

  • OpenJDK 11 安装在: /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  • OpenJDK 8 安装在: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

检查java环境变量

bash
echo $JAVA_HOME

设置环境变量

bash
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java

image-20250905223758464

修改Jenkins的配置文件/etc/init.d/jenkins,找到一行JAVA=$(command -v "${COMMAND_NAME}"),把这行直接注释了,然后添加一行 JAVA=/usr/lib/jvm/java-11-openjdk-amd64/bin/java,保存退出

bash
vim  /etc/init.d/jenkins

image-20250905220029750

执行命令:systemctl daemon-reload重新加载

bash
systemctl daemon-reload

重启Jenkins

bash
systemctl restart jenkins.service

查看Jenkins状态

bash
systemctl status jenkins.service

2)版本兼容性 ​

官网查找版本发现最新版本需要使用Java17 or Java21,已经不支持Java11了…… 所以要么使用旧版本的Jenkins,要么使用新版本的Java

image-20250905230027132

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 系统上):

bash
sudo netstat -tuln | grep 8080

如果发现端口被占用,你可以选择关闭占用端口的应用程序,或者将 Jenkins 配置为使用不同的端口。

Jenkins启动慢 ​

现象一:Jenkins启动时提示timeout

image-20250906102942277

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

image-20250906110439489

原因:因为Jenkins的默认更新镜像用的国外的镜像,我们只需要换一个源,不使用官网的源即可。

1)找到 jenkins工作目录 ​

查找文件 hudson.model.UpdateCenter.xml

bash
find / -name *.UpdateCenter.xml

image-20250906111520626

2)编辑文件 ​

将https://updates.jenkins.io/update-center.json内容为国内地址

以下是一些常用的国内 Jenkins 插件更新源地址:

测试下来就华为的能用,但最好不要直接用,直接用对应的是最新版本的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文件

bash
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml

image-20250906140840778

更新方式二:在界面上直接修改

image-20250906140934369

3)重启Jenkins ​

重启后就可以正常访问了

签名验证失败 ​

更换国内源后仍然无法访问,出现There were errors checking the update sites: Signature verification failed in update site

image-20250906133825495

禁用jenkins签名验证

Jenkins 提供了禁用更新站点签名验证的选项。可以通过以下步骤禁用签名验证

  • 登录 Jenkins,进入 Manage Jenkins > Script Console
  • 控制台输入以下脚本

image-20250906135359716

执行完成后有Result返回信息

image-20250906135554537

重启 Jenkins 以使更改生效

bash
service jenkins restart

或

http://localhost:8080/restart

再次进入即可正常使用插件功能了

image-20250906140057457

Jenkins离线 ​

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

image-20250906114810846

解决上述问题方法:

修改/var/lib/jenkins/updates/default.json

jenkins在下载插件之前会先检查网络连接,其会读取这个文件中的网址。默认是访问谷歌,所以将图下的google改为www.baidu.com即可,更改完重启服务。

发现/var/lib/jenkins目录下竟然没有updates文件夹…… ps:该方案无法执行,实际上还是镜像地址的问题,请再检查镜像地址

点击配置代理,再返回后,页面又变为了新手入门

image-20250906120729065

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

image-20250906121257315

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堆内存(此方法验证无效) ​

具体分为以下几步:

  1. 找到配置文件 打开Ubuntu系统下Jenkins的默认配置文件 /etc/default/jenkins。

  2. 编辑配置 在配置文件中,你需要修改 JAVA_ARGS 这个变量。

    • 设置堆内存大小:通过 -Xms(初始堆大小)和 -Xmx(最大堆大小)来指定。例如,下面的配置会设置初始堆内存为1GB,最大堆内存为4GB。

      bash
      JAVA_ARGS="-Xms1024m -Xmx4096m"

      你也可以使用其他变量,如 JENKINS_JAVA_OPTIONS,效果是相同的。

    • 一个常见的优化做法:将 -Xms 和 -Xmx 的值设为相同。这样可以避免JVM在运行时频繁地申请和释放内存,从而减少性能抖动。

  3. 重启并验证

    • 保存文件后,重启Jenkins服务使配置生效:

      bash
      sudo systemctl restart jenkins
    • 验证参数是否生效:

      bash
      ps -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 命令来创建或编辑覆盖文件,这是最不容易出错的方法。

  1. 打开编辑器 在终端中执行以下命令,这会自动创建或编辑 /etc/systemd/system/jenkins.service.d/override.conf 文件:

    bash
    sudo systemctl edit jenkins
  2. 写入正确配置 在编辑器中完全删除原有内容,并粘贴以下配置:

    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的功能能正常运行。
  3. 重新加载并重启服务 保存文件并退出编辑器后,务必执行以下命令让配置生效:

    bash
    sudo systemctl daemon-reload
    sudo systemctl restart jenkins

最终验证 ​

重启后,再次使用验证命令检查:

bash
ps -ef | grep jenkins

如果配置成功,你将在输出中看到清晰的 -Xms2048m -Xmx2048m 参数。

bash
# 预期的正确输出
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

参考网站 ​

https://www.jianshu.com/p/bcf3f5699547

https://blog.csdn.net/qq_38566465/article/details/107376719