目录
- 一. 简介
- 1.1 核心概念
- 1.2 Pipeline
- 1.3 常用插件
- 二. 安装
- 三. 启动
- 3.1 `java -jar`的方式 → 临时使用
- 3.1.1 配置`JENKINS_HOME` 和 `JAVA_HOME`
- 3.1.2 指定端口号启动
- 3.2 👍systemctl的方式 → 长期使用
- 3.2.1 配置JDK环境变量
- 3.2.2 指定端口号启动
一. 简介
Jenkins是目前最流行的开源持续集成(Continuous Integration,CI)和持续交付/部署(Continuous Delivery/Deployment,CD)工具之一。Jenkins最初的目标是自动化软件构建,现在已经发展成一个功能非常强大的自动化平台,可以自动完成从代码提交到软件部署的整个流程。
简单来说:Jenkins 就是一个自动执行任务的平台,本质上就是:定时或者触发执行脚本。
开发人员修改代码 │ ▼ 提交到 Git │ ▼ Jenkins 检测到代码变化 │ ▼ 自动执行: ↓ 编译 ↓ 单元测试 ↓ 打包 Jar ↓ 上传服务器 ↓ 重启 Spring Boot ↓ 通知部署成功1.1 核心概念
Job(任务)- 最基本的概念
- 一个Job通常用多个stage构成
Build(构建)- Job 每执行一次,就是一次 Build
- 每次Build都会保存日志
Workspace(工作空间)- Pipeline执行过程中,用来存储中间产物的目录
apluser@ubuntu22-1:~$ls-l$JENKINS_HOME/workspace/ drwxr-xr-x2apluser apluser4096Jul1814:37 first-job drwxr-xr-x3apluser apluser4096Jul2009:32 second-pipeline@tmp drwxr-xr-x3apluser apluser4096Jul2010:26 third-pipeline@2@tmp drwxr-xr-x3apluser apluser4096Jul2010:36 third-pipeline@tmp apluser@ubuntu22-1:~$
Node- Master节点
- Agent节点
- 一个Master节点对应多个Agent节点
Executor- 并发执行槽位
Executor=4表示同时运行个Job
1.2 Pipeline
🔷Pipeline:把整个 CI/CD 流程用代码描述出来的一种方式。
| 对比项 | Declarative Pipeline | Scripted Pipeline |
|---|---|---|
| 风格 | 声明式 | Groovy 脚本式 |
| 可读性 | 高 | 较低 |
| 学习难度 | 低 | 高 |
| 灵活性 | 较高 | 非常高 |
| 官方推荐 | ✅ 是 | 可用于复杂逻辑 |
🔷常见的触发方式:
| 触发方式 | 说明 |
|---|---|
| 手动点击 | 在 Web 页面点击Build Now |
| 定时构建 | 使用 Cron 表达式定时执行 |
| Git Webhook | Git 仓库推送代码后自动触发 |
| 上游任务 | 一个 Job 完成后触发另一个 Job |
| 远程 API | 通过 URL 或 REST API 触发构建 |
| SCM 轮询 | 定期检查代码仓库是否有变化 |
1.3 常用插件
| 插件 | 用途 |
|---|---|
| Git | 拉取 Git 仓库 |
| Pipeline | 支持 Jenkinsfile |
| SSH Agent | 使用 SSH 密钥连接远程服务器 |
| Credentials | 管理用户名、密码、SSH Key、Token 等凭据 |
| Maven Integration | 与 Maven 构建集成 |
| JUnit | 展示单元测试结果 |
| Blue Ocean | 更现代化的 Pipeline 可视化界面 |
二. 安装
针对不同的平台和操作系统,官方提供了多种安装方式,详情请参考官网:
- https://www.jenkins.io/download/
🔷此处介绍来源于官网的,在Ubuntu平台上的安装方式:
- 添加软件源
sudowget-O/etc/apt/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2026.keyecho"deb [signed-by=/etc/apt/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/"|sudotee/etc/apt/sources.list.d/jenkins.list>/dev/null- 安装
sudoaptupdatesudoaptinstalljenkins- 确认安装成功
apluser@ubuntu22-1:~$whichjenkins /usr/bin/jenkins apluser@ubuntu22-1:~$ jenkins--version2.568.1 apluser@ubuntu22-1:~$ls-l/usr/share/java/jenkins.war -rw-r--r--1root root101063396Jul1000:43 /usr/share/java/jenkins.war三. 启动
3.1java -jar的方式 → 临时使用
3.1.1 配置JENKINS_HOME和JAVA_HOME
🔷JENKINS_HOME是Jenkins最重要的目录,可以理解为 Jenkins 的数据目录。它保存了几乎所有 Jenkins 的数据,包括:
- Job 配置
- Pipeline 配置
- 插件
- 凭据(加密保存)
- 构建历史
- Workspace(默认情况下)
- 日志
- 用户配置
🔷默认位置:
apluser@ubuntu22-1:~$ls-ld/var/lib/jenkins drwxr-xr-x2jenkins jenkins4096Jul1000:43 /var/lib/jenkins- 可以根据需求自定义
JENKINS_HOME和JAVA_HOME - 使用
java -jar的方式属于临时测试使用,因此临时在~/.bashrc中进行配置
# 创建jenkins_home文件夹mkdir~/jenkins_home# 配置环境变量, Jenkins运行依赖于Java, 因此也需要配置Java的环境变量nano~/.bashrc# 配置java的环境变量exportJAVA_HOME=/home/apluser/JDK/jdk25# 配置Jenkins的环境变量exportJENKINS_HOME=/home/apluser/jenkins_home# 导出环境变量exportPATH=$JAVA_HOME/bin:$JENKINS_HOME:$PATH# 让环境变量生效source~/.bashrc3.1.2 指定端口号启动
- 默认端口号为8080,可以在启动的时候指定端口号
java-jar/usr/share/java/jenkins.war--httpPort=9090- 如果通过
--httpPort的方式临时指定端口号启动的话,Jenkins会提示反向代理设置错误
修改下图所示的Jenkins URL中的端口号即可
- 第一次启动的时候,会要求设置用户和密码,初始的密码会显示在控制台上,如下所示
3.2 👍systemctl的方式 → 长期使用
jenkins的service配置文件- 不要直接修改,要通过
sudo systemctl edit jenkins来修改
apluser@ubuntu22-1:~$ls-l/lib/systemd/system/jenkins.service -rw-r--r--1root root5639Jul1000:43 /lib/systemd/system/jenkins.service- 常用的命令
# 启动 Jenkins 服务sudosystemctl start jenkins# 停止当前的 Jenkins 服务sudosystemctl stop jenkins# 编辑 Jenkins 服务sudosystemctl edit jenkins# 重新读取所有 systemd 配置文件, 并不会重启服务sudosystemctl daemon-reload# 重启 Jenkins 服务sudosystemctl restart jenkins# 设置开机自动启动sudosystemctlenablejenkins# 禁止开机自动启动, 不会停止当前已经运行的服务sudosystemctl disable jenkins# 查看是否设置为开机启动sudosystemctl is-enabled jenkins# 查看是否正在运行sudosystemctl is-active jenkins# 查看运行状态sudosystemctl status jenkins# 查看服务内容sudosystemctl show jenkins systemctlcatjenkins# 查看使用的Environment属性内容systemctl show jenkins--property=Environment# 查看用户属性systemctl show jenkins--property=User# 查看启动日志sudojournalctl-ujenkins-b--no-pager-n503.2.1 配置JDK环境变量
🔷Jenkins运行依赖于JDK,因此必须配置JDK的环境变量
- 因为使用
systemctl的方式启动Jenkins服务,因此JDK不能在某个用户的~/.bashrc中进行配置 - 详情请参考这篇博客:Linux Ubuntu中配置安装Java
3.2.2 指定端口号启动
- 默认的端口号会存储在下面所示的两个路径中
/etc/default/jenkins/lib/systemd/system/jenkins.service
- 这两个文件是配合工作的,但真正起作用的是
jenkins.service文件中的 Environment 变量。
apluser@ubuntu22-1:~$ jenkins--version2.568.1 apluser@ubuntu22-1:~$ apluser@ubuntu22-1:~$sudogrepHTTP_PORT /etc/default/jenkinsHTTP_PORT=8080# --httpPort=$HTTP_PORT (default 8080; disable with -1)# --httpsPort=$HTTP_PORTJENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT"apluser@ubuntu22-1:~$ apluser@ubuntu22-1:~$sudogrepJENKINS_PORT /lib/systemd/system/jenkins.serviceEnvironment="JENKINS_PORT=8080"🔺不推荐修改/lib/systemd/system/jenkins.service,因为:软件升级时,这个文件可能会被覆盖。
👍推荐使用sudo systemctl edit jenkins去修改
- 执行之后,会出现一个全部都是注释的模板配置文件
- 将需要修改的内容添加到如下图所示的开头区域
- 英文注释写的很明白,写到其他地方的话,会被忽略
- 修改完成之后,会在
/etc/systemd/system/目录下,生成一个覆盖默认配置用的jenkins.service.d文件夹和override.conf文件
apluser@ubuntu22-1:~$ls-l/lib/systemd/system/jenkins.service -rw-r--r--1root root5639Jul1000:43 /lib/systemd/system/jenkins.service apluser@ubuntu22-1:~$ apluser@ubuntu22-1:~$ls-l/etc/systemd/system/jenkins.service.d/override.conf -rw-r--r--1root root41Jul2121:09 /etc/systemd/system/jenkins.service.d/override.conf apluser@ubuntu22-1:~$ apluser@ubuntu22-1:~$cat/etc/systemd/system/jenkins.service.d/override.conf[Service]Environment="JENKINS_PORT=8082"apluser@ubuntu22-1:~$- 重新启动
# 重新启动apluser@ubuntu22-1:~$sudosystemctl daemon-reload apluser@ubuntu22-1:~$ apluser@ubuntu22-1:~$sudosystemctl restart jenkins# 再次确认apluser@ubuntu22-1:~$ systemctl show jenkins|grepJENKINS_PORTEnvironment=JENKINS_HOME=/var/lib/jenkinsJENKINS_WEBROOT=/var/cache/jenkins/warJAVA_OPTS=-Djava.awt.headless=trueJENKINS_PORT=8082apluser@ubuntu22-1:~$- 查看状态
- 可以看到,端口号已经发生了变化