首页/开发/CI/CD 与发布速查/Jenkins matrix 矩阵构建
工具链要点63 条

Jenkins matrix 矩阵构建

按轴组合生成多个执行单元:axes 定义维度、excludes 排除组合,单元格可带独立的条件与后置处理。

CI/CD 与发布速查开发更新于 2026-10-13

矩阵构建是什么

Jenkins 声明式流水线的 matrix 指令按多个轴的组合批量生成执行单元:每个组合相当于一个子任务,轴值自动注入为环境变量,单元格可以带自己的条件与后置处理,excludes 用来排除无意义组合。适合跨平台、跨版本、跨配置的验证矩阵,前提是先算清组合总数。

基本信息

结构matrix { axes { axis { name / values } } }
排除excludes 过滤不可能或不需要的组合
单元格可声明 when、agent、post 等
变量轴值作为环境变量注入,命令直接引用
并行组合默认并行执行,受节点容量约束
适用跨平台、跨 JDK 或 Node 版本、参数组合验证

跨平台矩阵

跨平台矩阵
stage('cross') {
  matrix {
    axes {
      axis { name 'PLATFORM'; values 'linux', 'windows' }  // 平台维度
      axis { name 'JDK'; values '17', '21' }  // 运行时维度
    }
    excludes {
      exclude {  // 排除 windows + JDK21 组合
        axis { name 'PLATFORM'; values 'windows' }
        axis { name 'JDK'; values '21' }
      }
    }
    stages {
      stage('build') {
        steps { sh 'echo $PLATFORM-$JDK' }  // 轴值即环境变量
      }
    }
  }
}

典型使用场景

  • 跨平台验证:同一代码在 Linux 与 Windows 上并行构建
  • 多版本兼容:JDK 17 与 21 等运行时的组合回归
  • 配置矩阵:数据库类型乘版本的四象限集成测试
  • 发布前全组合验证:确认支持的组合都过一遍
  • 缩减策略:用 excludes 去掉已知不支持组合,节省资源
  • 单元格级后处理:按组合分别归档产物与日志
  • 插件生态验证:按插件版本组合做兼容性检查

指令与作用

指令作用注意
axes / axis定义维度与取值组合数相乘式增长
excludes排除组合维度要精确匹配
when单元格级条件可基于轴值判断
agent单元格级节点特殊平台组合要备对应节点
post单元格级后处理失败组合单独收集日志
轴值即环境变量:命令参数化直接引用,无需额外转换。
轴组合数过多:构建时间与资源消耗成倍上升,先算组合总量再定维度。
给矩阵单元设置合理的超时与并发上限,避免队列被单个巨大矩阵占满。
单个单元格失败只标记对应组合:用 post 收集日志,再决定是否阻断整体发布。

易错点

  • 轴组合数过多:构建时间与资源消耗成倍上升。
  • 特殊平台组合缺对应节点:单元格长时间等待或失败。
  • excludes 写不精确:想排除的组合仍在执行。
  • 单元格失败互相掩盖:汇总视图下要逐个查看。
  • 未设超时:挂起的组合长期占用执行器,拖慢其它构建。

数据来源与参考

  • Jenkins 手册《Pipeline Syntax》(matrix)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌