jenkins
Jenkins 简介
Jenkins 是基于 Java 开发的开源自动化服务器,是最主流的 CI/CD 持续集成、持续交付工具Jenkins
war 包放到 Tomcat 运行 + Windows 作为 agent 从节点,就是 Jenkins 分布式架构。
✅ 核心作用
用来自动化软件构建、代码拉取、单元测试、接口测试(可调用 JMeter 脚本)、打包、部署整套流程。
- CI 持续集成:开发提交代码到 Git,Jenkins 自动拉取代码、编译、执行测试,尽早发现 bug。
- CD 持续交付 / 部署:构建完成后,自动部署到测试 / 预发环境。
✅ 核心架构(Master/Controller + Agent 主从架构,你实验用到)
- Controller(主节点,旧称 Master)
Web 管理页面、任务调度、保存配置、分发任务;不建议跑繁重构建任务。 - Agent(从节点 / 代理节点,你 Windows 机器)
接收主节点下发任务,实际执行构建、测试。
- Linux agent:SSH 连接
- Windows agent:JNLP + agent.jar(就是你刚才 cmd 运行的 jar 包)
- 优势:跨平台、分布式并发,横向扩容。
✅ 核心概念(⭐)
- Job / 任务:自动化任务,两种常用类型
- 自由风格项目(Freestyle):图形界面配置,入门简单(你现在用的)
- Pipeline 流水线:用 Jenkinsfile(Groovy 代码)定义流水线,流水线即代码,企业主流
- Build 构建:一次任务执行,每次触发就是一次 build,保留构建日志
- 插件 Plugin:Jenkins 核心很小,靠插件扩展能力。Git、Maven、JMeter、SonarQube 等都是插件。
- 触发器 Build Trigger:怎么触发构建
- 手动点击构建
- 定时构建
- Git 提交代码后自动触发(WebHook)
✅ 典型 CI 流水线流程
开发者提交代码 → Jenkins 收到触发 → 拉取 Git 代码 → Maven 编译打包 → 执行测试(JMeter 接口测试) → 生成测试报告 → 部署到服务器
✅ 优缺点
优点
- 开源免费,跨平台(Windows、Linux、Tomcat war 部署)
- 插件生态极其丰富,几乎可以对接所有开发测试工具
- 支持分布式构建,多 agent 并行执行任务
- 既可以做代码构建,也可以自动化执行测试脚本(JMeter、自动化测试)
缺点
- 插件多,版本兼容问题多
- 配置复杂,企业级维护成本高
- 界面老旧,安全性需要手动加固
一句话:Jenkins 是 Java 编写的开源自动化服务器,用于实现 CI/CD 持续集成与持续交付;采用主从架构,主节点负责调度管理,Agent 从节点执行任务;依靠大量插件扩展能力,支持自动拉取代码、编译、测试、打包部署,分为自由风格项目和 Pipeline 流水线两种项目类型。
jenkins 环境搭建
- 获取虚拟机 ip 地址:
ifconfig - 关闭防火墙:
service iptables stop - xshell连接虚拟机
- 创建一个空文件夹:
mkdir hj - rz 上传 jdk包
jdk-8u121-linux-i586.rpm+ 服务器tomcat包apache-tomcat-7.0.56.tar.gz
-
如果 输入rz 显示 找不到,即没安装
lrzsz -
安装命令
yum -y install lrzsz -
yum修改为阿里镜像源
第一步:备份系统自带的repo文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载阿里yum镜像源的repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
第三步:清除缓存(两个命令)
yum clean all
第四步:删除yum缓存文件
rm -rf /var/cache/yum
第五步:生成新的yum缓存文件
yum makecache
第六步:下载lrzsz(上传下载的工具lrzsz)
yum install lrzsz | yum -y install lrzsz 【-y 意思为所有选项均为 yes】
- 安装jdk
rpm -ivh jdk-8u121-linux-i586.rpm
- 查看jdk版本
Java -version
- 解压 tomcat 压缩包
tar -zxvf apache-tomcat-7.0.56.tar.gz - 进入tomcat服务器
cd apache-tomcat-7.0.56 - 进入 bin 文件夹
cd bin - 启动服务
sh startup.sh
- 验证服务器 tomcat 启动成功 ip地址:8080 访问
- 关闭服务器
sh shutdown.sh
- 返回上级菜单,进入 webapps
- 删除 webapps 目录下的所有文件
rm -rf * - 上传 jenkins war包 rz
- 重启虚拟机,前往 bin 目录,启动服务器
- 访问 jenkins - ip地址:8080/jenkins
- 查看秘钥路径
cat /root/.jenkins/secrets/initialAdminPassword - 跳过插件安装
- 进入jenkins 界面
- 点击 my views,然后点击jenkins 后面 name 向下箭头 选中 configure 设置密码,重新登录
- 点击 Manage Jenkins 新增节点 选择 Manage Nodes and Clouds 点击 new node
- 进入 节点界面
Remote root directory:节点存放目录Labels:标签名Usage:用户代理
- 安全设置配置

选择代理,随机 全部勾选

- 下载 agent.jar 包

将下载后的 jar 包放到一个文件夹中,比如 D:\test

- 安装 jdk-8u60-windows-x64.exe

将图中圈起来的 命令 复制到dos中 在对应的目录下 启动Windows代理节点 - 新建项目 new item
- 点击 新建好的项目 选择 Configure 配置
选择节点 标签

- 选择文件 复制路径到如图所示位置 python python文件路径

- 保存之后,就可以构建该项目了
定时构建
点击项目 - 点击configure - 选择 Build periodically

✅ 简介
定时构建,是 Jenkins构建触发器的一种,按照 Cron 表达式周期性自动执行任务,不管代码有没有变更,到点就执行。
测试常用场景:夜间自动化回归测试(定时跑 JMeter 接口脚本),每天凌晨自动执行,跑完生成测试报告。
⚠️区分两个容易混淆触发器
- 定时构建 Build periodically:到时间直接执行 job,不管代码有没有改动
- Poll SCM(轮询代码仓库):到时间去 Git 检查代码,如果代码有更新才构建,代码不变就不跑
✅ 自由风格项目配置步骤
- 进入 Job →【配置】→【构建触发器】
- 勾选 Build periodically(定时构建)
- 在输入框填写 Jenkins 的 Cron 表达式
- 页面下方会预览下次执行时间,用来校验表达式是否正确
- 保存即可
✅ Cron 表达式语法(5 个字段,空格分隔)
分钟 小时 日期 月份 星期
| 字段 | 取值范围 |
|---|---|
| 分钟 | 0~59 |
| 小时 | 0~23 |
| 日期 | 1~31 |
| 月份 | 1~12 |
| 星期 | 0~7,0 和 7 都代表周日 |
Jenkins 推荐使用
H(Hash 散列),分散任务执行时间,避免大量任务同一瞬间并发压垮服务器。尽量不要直接写固定 0 分。
✅ Pipeline 流水线写法(Jenkinsfile)
在 pipeline 顶层添加triggers
pipeline {
agent any
triggers {
cron('H 2 * * *') // 每天凌晨2点定时构建
}
stages {
stage('执行JMeter测试') {
steps {
sh 'jmeter -n -t test.jmx'
}
}
}
}
✅ 重点
- H 的作用:Hash,对任务名称做哈希,随机分散分钟,防止多个任务同一时刻全部启动,减轻 Jenkins 压力。
- 适用场景:定时回归测试、定时报表、定期巡检;代码提交自动构建优先用 Git WebHook,不用定时。
- Build periodically 和 Poll SCM 区别:
- Build periodically:到点就跑,不看代码是否变化(适合定时回归)
- Poll SCM:到点去 Git 轮询,代码有改动才构建
- 缺点:Jenkins 服务关机,定时任务就会错过,不会补跑。
✅ 踩坑点
- 时区:Jenkins 使用服务器系统时间,不是本地电脑时间。
- 表达式写错:页面会提示错误,并且预览下次构建时间。
- 定时任务过多,集中同一时间执行,导致 Jenkins 卡顿 → 用
H解决。
结合你的实验:配置
H 2 * * *,每天凌晨 2 点自动执行 Jenkins 任务,调用 Windows Agent,运行 JMeter 压测脚本,自动生成报告。
触发器是用于控制自动化测试执行时间的 日程表里有5个数字,分别为:
H * * * *
第一个* 表示: 分钟:0—59
第二个* 表示: 小时:0–23
第三个* 表示 :日1—31
第四个* 表示 :月 1—12
第五个* 表示 周:0–7 0和7都代表星期天
H 表示随机
- 表示所有
- 表示连续
/ 表示间隔
, 表示和
M-N 指定一个范围值
例如: 每2分钟执行一次 H/2 * * * * (注意:要空一格,H/2 每隔两分钟,第二个* 任何时 ,第三个* 表示任何日,第四个* 表示任何的月,第五个* 表示任意周 )
工作日每2分钟执行一次 H/2 * * * 1-5
工作日每隔2小时执行一次 H H/2 * * 1-5
每天8至点16点,每1小时执行一次 H 8-16/1 * * *
每前半小时中,间隔10分钟 H/(0-30)/10 * * * *
每个工作日从早上9:45分钟到下午3:45分中结束这段时间内,每间隔2小时的45分钟那一刻。45 9-152 * * 1-5
每个工作日从早上9:00 到下午5:00 这段时间内每间隔2小时的的某刻;
H (9-17)/2 * * 1-5

浙公网安备 33010602011771号