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_HOMEJAVA_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_HOMEJAVA_HOME

🔷JENKINS_HOMEJenkins 最重要的目录,可以理解为 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_HOMEJAVA_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:~$
相关推荐
云智慧AIOps社区1 小时前
2026 国产化 ITSM 替代指南:横向测评 ServiceNow、轻帆云、Jira等五款主流IT服务管理平台
运维·人工智能·运维开发·it服务管理·itsm平台
Urbano2 小时前
针织卫衣全流程生产工序科普:自动化替代、产能优化与设备选型实战方案
运维·自动化
AC赳赳老秦2 小时前
招投标公开数据自动化采集实战:基于 OpenClaw 的定时抓取与业务关键词精准推送
运维·服务器·数据库·自动化·测试用例·deepseek·openclaw
小的博客2 小时前
windows下安装Docker Desptop
运维·docker·容器
酷可达拉斯2 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998343 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
emfuture3 小时前
工业自动化现场四大典型故障复盘:从环境适配到边缘智能的工程实践
运维·网络·自动化
笑锝没心没肺3 小时前
yum update 报错:GPG key retrieval failed: [Errno 14] HTTPS Error 404 - Not Found
linux·运维·服务器
keke.shengfengpolang3 小时前
自动化专业毕业能干什么?制造业、控制、软件、数据怎么选,2026版大实话
运维·自动化