Jenkins 的本质就是一个“脚本执行器 + 监控平台 + 插件容器,它的能力几乎完全由插件决定。所以,学习 Jenkins 的过程,其实就是学习怎么根据业务场景选择、配置和使用插件的过程。
下载安装jdk
# 输出x86_64:表示这是一个 64 位的 x86 系统。
uname -m
Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/
这是我的安装路径
配置maven 和jdk21环境变量
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
source /etc/profile
java -version
# 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
# 下载 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
# 启动服务
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 脚本
其中:
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/
3. 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
<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>