Centos 安装Jenkins

Jenkins 的本质就是一个"脚本执行器 + 监控平台 + 插件容器,它的能力几乎完全由插件决定。所以,学习 Jenkins 的过程,其实就是学习怎么根据业务场景选择、配置和使用插件的过程。

下载安装jdk

javascript 复制代码
# 输出x86_64:表示这是一个 64 位的 x86 系统。
uname -m

Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/

这是我的安装路径

配置maven 和jdk21环境变量

javascript 复制代码
export JAVA_HOME=/usr/local/share/jdk-21.0.7/
export MAVEN_HOME=/usr/local/share/maven-3.9.6/

export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
javascript 复制代码
source /etc/profile

java -version
javascript 复制代码
# Jenkins 启动会去/usr/bin/ 找可在执行java命令

sudo ln -s /usr/local/share/jdk-21.0.7/bin/java /usr/bin/java
sudo ln -s /usr/local/share/jdk-21.0.7/bin/javac /usr/bin/javac

下载安装 Jenkins Linuxhttps://www.jenkins.io/doc/book/installing/linux/#red-hat-centos

javascript 复制代码
# 下载 Jenkins 官方 YUM 仓库配置文件并保存到 /etc/yum.repos.d/jenkins.repo
# 这个文件包含了 Jenkins 软件包的仓库地址信息,使得 yum 可以从这个源安装或更新 Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

# 导入 Jenkins 官方 GPG 公钥,用于验证下载的软件包是否被篡改
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

# 更新现有的所有软件包到最新版本,确保系统中的所有软件都是最新的
sudo yum upgrade

# 安装Jenkins 运行所需的 Java 环境 java-21-openjdk
sudo yum install fontconfig java-21-openjdk

# 安装 Jenkins 软件包
sudo yum install jenkins

# 当修改了服务文件或者添加了新的服务后,需要执行此命令使更改生效
sudo systemctl daemon-reload
javascript 复制代码
# 启动服务
sudo systemctl start jenkins

# 检查状态
sudo systemctl status jenkins

# 开机自启
sudo systemctl enable jenkins

页面还是挺友好的!

踩坑!

  1. jdk版本过低 ,jdk8肯定是不支持最新的jenkins,需要升级jdk,按照官网是使用jdk21

  2. jenkins 启动找不到java 可执行的命令,就是全局变量设置不生效

为什么 /etc/profile 设置对 systemd 服务无效?

/etc/profile 及其相关的脚本(例如 ~/.bash_profile, ~/.bashrc 等)主要用于配置用户登录 shell 的环境。而 systemd 启动的服务并不通过这些脚本初始化它们的环境,因此这些环境变量不会自动应用到 systemd 管理的服务中。

查看jenkins 启动shell 脚本

其中:

javascript 复制代码
infer_java_cmd() {
    if [ -n "${JENKINS_JAVA_CMD}" ] && [ -x "${JENKINS_JAVA_CMD}" ]; then
        return 0
    fi

    if [ -n "${JAVA_HOME}" ] && [ -x "${JAVA_HOME}/bin/java" ]; then
        JENKINS_JAVA_CMD="${JAVA_HOME}/bin/java"
        return 0
    fi

    JENKINS_JAVA_CMD="$(command -v java)" || return "$?"
}


解释:
功能:推断要使用的 java 可执行文件路径。
优先顺序:
环境变量 JENKINS_JAVA_CMD 显式指定
使用 JAVA_HOME/bin/java
使用系统 PATH 中的 java(即 /usr/bin/java)

所以为了开头 创建2个软链接 指向/usr/bin/
  1. maven 安装时记得修改setting文件里本地仓库地址和国内镜像

4.端口8080被占用问题

修改jenkins 的端口, 还是修改启动shell脚本,开头加一行 export JENKINS_PORT=9090

问题:Jenkins 使用 JDK 21,而项目是使用 JDK 8 编写的代码,这样编译会不会出问题?

答:

Jenkins 本身是一个 Java Web 应用,它运行时使用的 JDK(即 JENKINS_JAVA_CMD 或 JAVA_HOME)决定了 Jenkins 运行环境的版本,比如你使用的是 JDK 21。但你的项目代码在 Jenkins 中是如何被构建的,取决于你使用的工具和配置,比如Maven xml

javascript 复制代码
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>
相关推荐
我星期八休息20 分钟前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
counting money37 分钟前
Spring AI Alibaba 从入门到实战:构建企业级 AI 应用
java·人工智能·spring
RisunJan1 小时前
Linux命令-sysctl(运行时修改内核参数)
linux·网络·智能路由器
yunwei371 小时前
eBPF 教程:使用 fsession 追踪慢速 vfs_read 调用
linux·云原生
原野池予1 小时前
深入Java集合框架:数组与List互转底层原理剖析(JDK 8)
java·数据结构·list
A_humble_scholar1 小时前
Linux 网络基础(三)下的 HTTP 核心详解:从请求响应到状态管
linux·网络·http
Java成神之路-1 小时前
深入理解 HashMap 扩容时机:JDK 7 vs JDK 8 的设计差异与取舍
java·juc
李冰然1 小时前
深入Java集合框架:数组与List互转底层原理剖析(JDK 8)
java
Albart5751 小时前
Docker Desktop最新版安装踩坑全记录(Windows_Mac_Linux)【2026 4.74.0 终版】
linux·windows·macos·docker·环境搭建·踩坑记录
竹枝溪1 小时前
MySQL进阶:约束、多表设计、多表查询与事务
java·数据库·mysql·事务·子查询·acid·多表查询