Jenkins 安装与简单配置

目录

  • [一. 简介](#一. 简介)
    • [1.1 核心概念](#1.1 核心概念)
    • [1.2 Pipeline](#1.2 Pipeline)
    • [1.3 常用插件](#1.3 常用插件)
  • [二. 安装](#二. 安装)
  • [三. 启动](#三. 启动)
    • [3.1 `java -jar`的方式 → 临时使用](#3.1 java -jar的方式 → 临时使用)
      • [3.1.1 配置`JENKINS_HOME` 和 `JAVA_HOME`](#3.1.1 配置JENKINS_HOME 和 JAVA_HOME)
      • [3.1.2 指定端口号启动](#3.1.2 指定端口号启动)
    • [3.2 👍systemctl的方式 → 长期使用](#3.2 👍systemctl的方式 → 长期使用)
      • [3.2.1 配置JDK环境变量](#3.2.1 配置JDK环境变量)
      • [3.2.2 指定端口号启动](#3.2.2 指定端口号启动)
      • [3.2.3 修改`JENKINS_HOME`](#3.2.3 修改JENKINS_HOME)

一. 简介

Jenkins 是目前最流行的开源持续集成(Continuous Integration,CI)和持续交付/部署(Continuous Delivery/Deployment,CD)工具之一。Jenkins 最初的目标是自动化软件构建,现在已经发展成一个功能非常强大的自动化平台,可以自动完成从代码提交到软件部署的整个流程。

简单来说:Jenkins 就是一个自动执行任务的平台,本质上就是:定时或者触发执行脚本。

bash 复制代码
开发人员修改代码
        │
        ▼
提交到 Git
        │
        ▼
Jenkins 检测到代码变化
        │
        ▼
自动执行:
    ↓
    编译
    ↓
    单元测试
    ↓
    打包 Jar
    ↓
    上传服务器
    ↓
    重启 Spring Boot
    ↓
    通知部署成功

1.1 核心概念

  • Job(任务)

    • 最基本的概念
    • 一个Job通常用多个stage构成
  • Build(构建)

    • Job 每执行一次,就是一次 Build
    • 每次Build都会保存日志
  • Workspace(工作空间)

    • Pipeline执行过程中,用来存储中间产物的目录
    bash 复制代码
    apluser@ubuntu22-1:~$ ls -l $JENKINS_HOME/workspace/
    drwxr-xr-x 2 apluser apluser 4096 Jul 18 14:37 first-job
    drwxr-xr-x 3 apluser apluser 4096 Jul 20 09:32 second-pipeline@tmp
    drwxr-xr-x 3 apluser apluser 4096 Jul 20 10:26 third-pipeline@2@tmp
    drwxr-xr-x 3 apluser apluser 4096 Jul 20 10: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 可视化界面

二. 安装

针对不同的平台和操作系统,官方提供了多种安装方式,详情请参考官网:

🔷此处介绍来源于官网的,在Ubuntu平台上的安装方式:

  • 添加软件源
bash 复制代码
sudo wget -O /etc/apt/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2026.key
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
  • 安装
bash 复制代码
sudo apt update
sudo apt install jenkins
  • 确认安装成功
bash 复制代码
apluser@ubuntu22-1:~$ which jenkins
/usr/bin/jenkins
apluser@ubuntu22-1:~$ jenkins --version
2.568.1
apluser@ubuntu22-1:~$ ls -l /usr/share/java/jenkins.war
-rw-r--r-- 1 root root 101063396 Jul 10 00:43 /usr/share/java/jenkins.war

三. 启动

3.1 java -jar的方式 → 临时使用

3.1.1 配置JENKINS_HOME 和 JAVA_HOME

🔷JENKINS_HOME 是 Jenkins 最重要的目录,可以理解为 Jenkins 的数据目录。它保存了几乎所有 Jenkins 的数据,包括:

  • Job 配置
  • Pipeline 配置
  • 插件
  • 凭据(加密保存)
  • 构建历史
  • Workspace(默认情况下)
  • 日志
  • 用户配置

🔷默认位置:

bash 复制代码
apluser@ubuntu22-1:~$ ls -ld /var/lib/jenkins
drwxr-xr-x 2 jenkins jenkins 4096 Jul 10 00:43 /var/lib/jenkins
  • 可以根据需求自定义JENKINS_HOME 和 JAVA_HOME
  • 使用 java -jar的方式属于临时测试使用,因此临时在~/.bashrc中进行配置
bash 复制代码
# 创建jenkins_home文件夹
mkdir ~/jenkins_home

# 配置环境变量, Jenkins运行依赖于Java, 因此也需要配置Java的环境变量
nano ~/.bashrc
# 配置java的环境变量
export JAVA_HOME=/home/apluser/JDK/jdk25
# 配置Jenkins的环境变量
export JENKINS_HOME=/home/apluser/jenkins_home
# 导出环境变量
export PATH=$JAVA_HOME/bin:$JENKINS_HOME:$PATH

# 让环境变量生效
source ~/.bashrc

3.1.2 指定端口号启动

  • 默认端口号为8080,可以在启动的时候指定端口号
bash 复制代码
java -jar /usr/share/java/jenkins.war --httpPort=9090
  • 如果通过--httpPort的方式临时指定端口号启动的话,Jenkins会提示反向代理设置错误
    修改下图所示的Jenkins URL中的端口号即可
  • 第一次启动的时候,会要求设置用户和密码,初始的密码会显示在控制台上,如下所示

3.2 👍systemctl的方式 → 长期使用

  • jenkins的service配置文件
  • 不要直接修改,要通过sudo systemctl edit jenkins来修改
bash 复制代码
apluser@ubuntu22-1:~$ ls -l /lib/systemd/system/jenkins.service
-rw-r--r-- 1 root root 5639 Jul 10 00:43 /lib/systemd/system/jenkins.service
  • 常用的命令
bash 复制代码
# 启动 Jenkins 服务
sudo systemctl start jenkins
# 停止当前的 Jenkins 服务	
sudo systemctl stop jenkins	

# 编辑 Jenkins 服务
sudo systemctl edit jenkins
# 重新读取所有 systemd 配置文件, 并不会重启服务
sudo systemctl daemon-reload
# 重启 Jenkins 服务
sudo systemctl restart jenkins	

# 设置开机自动启动
sudo systemctl enable jenkins	
# 禁止开机自动启动, 不会停止当前已经运行的服务
sudo systemctl disable jenkins	

# 查看是否设置为开机启动
sudo systemctl is-enabled jenkins	
# 查看是否正在运行
sudo systemctl is-active jenkins	

# 查看运行状态
sudo systemctl status jenkins
# 查看服务内容
sudo systemctl show jenkins
systemctl cat jenkins

3.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 变量。
bash 复制代码
apluser@ubuntu22-1:~$ jenkins --version
2.568.1
apluser@ubuntu22-1:~$
apluser@ubuntu22-1:~$ sudo grep HTTP_PORT /etc/default/jenkins
HTTP_PORT=8080
# --httpPort=$HTTP_PORT (default 8080; disable with -1)
# --httpsPort=$HTTP_PORT
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT"
apluser@ubuntu22-1:~$
apluser@ubuntu22-1:~$ sudo grep JENKINS_PORT /lib/systemd/system/jenkins.service
Environment="JENKINS_PORT=8080"

🔺不推荐修改 /lib/systemd/system/jenkins.service,因为:软件升级时,这个文件可能会被覆盖。

👍推荐使用sudo systemctl edit jenkins去修改

  • 执行之后,会出现一个全部都是注释的模板配置文件
  • 将需要修改的内容添加到如下图所示的开头区域
  • 英文注释写的很明白,写到其他地方的话,会被忽略
  • 修改完成之后,会在/etc/systemd/system/目录下,生成一个覆盖默认配置用的jenkins.service.d文件夹和override.conf文件
bash 复制代码
apluser@ubuntu22-1:~$ ls -l /lib/systemd/system/jenkins.service
-rw-r--r-- 1 root root 5639 Jul 10 00: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-- 1 root root 41 Jul 21 21: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:~$
  • 重新启动
bash 复制代码
# 重新启动
apluser@ubuntu22-1:~$ sudo systemctl daemon-reload
apluser@ubuntu22-1:~$
apluser@ubuntu22-1:~$ sudo systemctl restart jenkins
# 再次确认
apluser@ubuntu22-1:~$ systemctl show jenkins | grep JENKINS_PORT
Environment=JENKINS_HOME=/var/lib/jenkins JENKINS_WEBROOT=/var/cache/jenkins/war JAVA_OPTS=-Djava.awt.headless=true JENKINS_PORT=8082
apluser@ubuntu22-1:~$
  • 查看状态
  • 可以看到,端口号已经发生了变化

3.2.3 修改JENKINS_HOME

  • JENKINS_HOME默认配置在jenkins.service,修改方式和端口号的修改方式相同,此处不进一步赘述。
bash 复制代码
apluser@ubuntu22-1:~$ grep JENKINS_HOME /lib/systemd/system/jenkins.service
# $JENKINS_HOME, $JENKINS_LOG, and (if you have already run Jenkins)
Environment="JENKINS_HOME=/var/lib/jenkins"
# Note also that the particularly sensitive parts of $JENKINS_HOME (such as
apluser@ubuntu22-1:~$
相关推荐
YH行业报告分析9 小时前
2026电缆铺设设备市场:自动化敷设与电网升级驱动增长
运维·自动化
pengdott10 小时前
Jenkins最新版本2.585修改插件源的方法
jenkins·流水线
ajassi200010 小时前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎10 小时前
linux 进程信号(下)
linux·运维·服务器
Mikko710 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋10 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm10 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Liuqy-0511 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器
考研保研资料分享11 小时前
自动化控制保研经验合辑:上交夏令营、北工大预推免与跨专业面试复盘(2025)
运维·面试·自动化
乐维_lwops12 小时前
2026选择运维监控系统时应该重点考察哪些功能?
大数据·运维·人工智能