You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行Jenkins Matrix Pipeline前选择指定轴值?

解决Jenkins Matrix Pipeline结合extendedChoice复选框过滤轴值的问题

核心问题是你没把复选框选中的客户端列表作为matrix轴的数据源,而是依然用了全量的客户端值。直接改matrix的axes配置,把硬编码的客户端列表换成用户选中的参数即可,步骤如下:

  1. 确保你的extendedChoice参数返回的是逗号分隔的字符串(复选框类型默认就是这个格式)
  2. 写个辅助方法把参数转成数组,避免空格或空值问题
  3. 在matrix的axis里调用这个方法作为values的来源

完整示例代码:

pipeline {
  agent any
  parameters {
    // 定义客户端复选框参数
    extendedChoice(
      name: 'SELECTED_CLIENTS',
      type: 'PT_CHECKBOX',
      value: 'clientA,clientB,clientC', // 全量客户端选项
      description: '勾选需要执行任务的客户端'
    )
    // 你的分支选择参数(保持原有配置即可)
    string(name: 'TARGET_BRANCH', defaultValue: 'main', description: '选择目标分支')
  }

  stages {
    stage('多客户端任务执行') {
      matrix {
        axes {
          axis {
            name 'CLIENT'
            values getFilteredClients() // 用过滤后的客户端列表作为轴值
          }
          // 其他轴配置(比如环境轴,保持原有)
          axis {
            name 'ENV'
            values 'dev', 'test', 'prod'
          }
        }

        stages {
          stage('拉取ENV文件') {
            steps {
              script {
                echo "正在为客户端【${CLIENT}】拉取${ENV}环境的配置文件,分支:${TARGET_BRANCH}"
                // 这里写你的拉取逻辑
              }
            }
          }
        }
      }
    }
  }
}

// 处理选中的客户端,转成干净的数组
def getFilteredClients() {
  // 如果用户没选任何客户端,默认返回全量(也可以改成报错提示)
  if (!SELECTED_CLIENTS) {
    return ['clientA', 'clientB', 'clientC']
  }
  // 拆分字符串并去除可能的空格
  return SELECTED_CLIENTS.split(',').collect { it.trim() }
}

关键说明

  • 不再硬编码CLIENT轴的values,而是通过getFilteredClients()动态获取用户选中的项
  • 辅助方法里加了空值判断,避免用户没选时matrix空跑
  • 拆分字符串时做了trim(),防止复选框参数带空格导致匹配失败

这样配置后,matrix就只会遍历你勾选的客户端,和其他轴(比如ENV)组合执行任务,不会再全量跑所有客户端了。

内容的提问来源于stack exchange,提问作者Mr Pablo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:52:17