jenkins

Jenkins 简介

Jenkins 是基于 Java 开发的开源自动化服务器,是最主流的 CI/CD 持续集成、持续交付工具Jenkins

war 包放到 Tomcat 运行 + Windows 作为 agent 从节点,就是 Jenkins 分布式架构。

✅ 核心作用
用来自动化软件构建、代码拉取、单元测试、接口测试(可调用 JMeter 脚本)、打包、部署整套流程。

  • CI 持续集成:开发提交代码到 Git,Jenkins 自动拉取代码、编译、执行测试,尽早发现 bug。
  • CD 持续交付 / 部署:构建完成后,自动部署到测试 / 预发环境。

✅ 核心架构(Master/Controller + Agent 主从架构,你实验用到)

  1. Controller(主节点,旧称 Master)
    Web 管理页面、任务调度、保存配置、分发任务;不建议跑繁重构建任务。
  2. Agent(从节点 / 代理节点,你 Windows 机器)
    接收主节点下发任务,实际执行构建、测试。
  • Linux agent:SSH 连接
  • Windows agent:JNLP + agent.jar(就是你刚才 cmd 运行的 jar 包)
  • 优势:跨平台、分布式并发,横向扩容。

✅ 核心概念(⭐)

  1. Job / 任务:自动化任务,两种常用类型
  • 自由风格项目(Freestyle):图形界面配置,入门简单(你现在用的)
  • Pipeline 流水线:用 Jenkinsfile(Groovy 代码)定义流水线,流水线即代码,企业主流
  1. Build 构建:一次任务执行,每次触发就是一次 build,保留构建日志
  2. 插件 Plugin:Jenkins 核心很小,靠插件扩展能力。Git、Maven、JMeter、SonarQube 等都是插件。
  3. 触发器 Build Trigger:怎么触发构建
  • 手动点击构建
  • 定时构建
  • Git 提交代码后自动触发(WebHook)

✅ 典型 CI 流水线流程
开发者提交代码 → Jenkins 收到触发 → 拉取 Git 代码 → Maven 编译打包 → 执行测试(JMeter 接口测试) → 生成测试报告 → 部署到服务器

✅ 优缺点
优点

  • 开源免费,跨平台(Windows、Linux、Tomcat war 部署)
  • 插件生态极其丰富,几乎可以对接所有开发测试工具
  • 支持分布式构建,多 agent 并行执行任务
  • 既可以做代码构建,也可以自动化执行测试脚本(JMeter、自动化测试)

缺点

  • 插件多,版本兼容问题多
  • 配置复杂,企业级维护成本高
  • 界面老旧,安全性需要手动加固

一句话:Jenkins 是 Java 编写的开源自动化服务器,用于实现 CI/CD 持续集成与持续交付;采用主从架构,主节点负责调度管理,Agent 从节点执行任务;依靠大量插件扩展能力,支持自动拉取代码、编译、测试、打包部署,分为自由风格项目和 Pipeline 流水线两种项目类型。

jenkins 环境搭建

  1. 获取虚拟机 ip 地址:ifconfig
  2. 关闭防火墙:service iptables stop
  3. xshell连接虚拟机
  4. 创建一个空文件夹:mkdir hj
  5. 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】

  1. 安装jdk rpm -ivh jdk-8u121-linux-i586.rpm
  • 查看jdk版本 Java -version
  1. 解压 tomcat 压缩包 tar -zxvf apache-tomcat-7.0.56.tar.gz
  2. 进入tomcat服务器 cd apache-tomcat-7.0.56
  3. 进入 bin 文件夹 cd bin
  4. 启动服务 sh startup.sh
  • 验证服务器 tomcat 启动成功 ip地址:8080 访问
  • 关闭服务器 sh shutdown.sh
  1. 返回上级菜单,进入 webapps
  2. 删除 webapps 目录下的所有文件 rm -rf *
  3. 上传 jenkins war包 rz
  4. 重启虚拟机,前往 bin 目录,启动服务器
  5. 访问 jenkins - ip地址:8080/jenkins
  6. 查看秘钥路径 cat /root/.jenkins/secrets/initialAdminPassword
  7. 跳过插件安装
  8. 进入jenkins 界面
  9. 点击 my views,然后点击jenkins 后面 name 向下箭头 选中 configure 设置密码,重新登录
  10. 点击 Manage Jenkins 新增节点 选择 Manage Nodes and Clouds 点击 new node
  11. 进入 节点界面
  • Remote root directory:节点存放目录
  • Labels:标签名
  • Usage:用户代理
  1. 安全设置配置
    image
    选择代理,随机 全部勾选
    image
  2. 下载 agent.jar 包
    image
    将下载后的 jar 包放到一个文件夹中,比如 D:\test
    image
  3. 安装 jdk-8u60-windows-x64.exe
    image
    将图中圈起来的 命令 复制到dos中 在对应的目录下 启动Windows代理节点
  4. 新建项目 new item
  5. 点击 新建好的项目 选择 Configure 配置
    选择节点 标签
    image
  6. 选择文件 复制路径到如图所示位置 python python文件路径
    image
  7. 保存之后,就可以构建该项目了

定时构建

点击项目 - 点击configure - 选择 Build periodically
image

✅ 简介

定时构建,是 Jenkins构建触发器的一种,按照 Cron 表达式周期性自动执行任务,不管代码有没有变更,到点就执行。

测试常用场景:夜间自动化回归测试(定时跑 JMeter 接口脚本),每天凌晨自动执行,跑完生成测试报告。
⚠️区分两个容易混淆触发器

  1. 定时构建 Build periodically:到时间直接执行 job,不管代码有没有改动
  2. Poll SCM(轮询代码仓库):到时间去 Git 检查代码,如果代码有更新才构建,代码不变就不跑

✅ 自由风格项目配置步骤

  1. 进入 Job →【配置】→【构建触发器】
  2. 勾选 Build periodically(定时构建)
  3. 在输入框填写 Jenkins 的 Cron 表达式
  4. 页面下方会预览下次执行时间,用来校验表达式是否正确
  5. 保存即可

✅ 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'
            }
        }
    }
}

✅ 重点

  1. H 的作用:Hash,对任务名称做哈希,随机分散分钟,防止多个任务同一时刻全部启动,减轻 Jenkins 压力。
  2. 适用场景:定时回归测试、定时报表、定期巡检;代码提交自动构建优先用 Git WebHook,不用定时。
  3. Build periodically 和 Poll SCM 区别:
  • Build periodically:到点就跑,不看代码是否变化(适合定时回归)
  • Poll SCM:到点去 Git 轮询,代码有改动才构建
  1. 缺点:Jenkins 服务关机,定时任务就会错过,不会补跑。

✅ 踩坑点

  1. 时区:Jenkins 使用服务器系统时间,不是本地电脑时间。
  2. 表达式写错:页面会提示错误,并且预览下次构建时间。
  3. 定时任务过多,集中同一时间执行,导致 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

posted @ 2026-10-13 20:35  一只鹿吖  阅读(3)  评论(0)    收藏  举报