首页 > 解决方案 > 如何在 groovy 管道中使用简单的过滤器传递 MatrixCombinationsParameterValue

问题描述

我有一个矩阵项目的工作,我添加了 ElasticAxis 名称:标签我还添加了一个矩阵组合参数名称:labelFilter 我想从带有过滤器标签 ==“PA16”的 groovy 管道运行该工作

这个电话对我不起作用:

[$class: 'MatrixCombinationsParameterValue', name: 'labelFilter', value: 'label=="PA16"']

问题是:调用矩阵组合参数的正确语法是什么?

我有几个分支,每个分支都应该使用特定的标签运行,管道获取分支名称并使用标签名称在 jenkins 中运行作业。假设我想运行带有标签“PA16”的作业,所以我将此代码添加到 groovy 管道文件中:

build job: 'test_matrix', 
    parameters: [
        string(name: 'RndBranch', value: RndBranch),
        string(name: 'BuildNumber', value: PAVersion),
        string(name: 'Auto_Build_Path', value: autoFolder),
        string(name: 'Installer_folder', value: Installer_folder),
        string(name: 'RabbitMQ_Server', value: rabbitMQServer),             
        string(name: 'QueName', value: qName),
        [$class: 'MatrixCombinationsParameterValue', name: 'labelFilter', filter: 'label=="PA16"']
    ]

标签: jenkinsgroovyjenkins-pipeline

解决方案


对于 Jenkins 管道,请改用矩阵。例如:

stage ('TestMatrix') {
    matrix  {
        axes {
            axis {
                name 'labelFilter'
                values 'PA16', 'PA17', 'PA18'
            }
            axis {
                name 'otherFilter'
                values 'Filter1', 'Filter2', 'Filter3'
            }
        }
        stages {
            stage ('Doing what you want') {
                 steps { echo "Doing what I want"}
            }
        }
    }
}

您可以在以下有关矩阵的文档或此处阅读更多信息


推荐阅读