Jenkins 管道 - 带有矩阵名称变量的 If/Else 语句

时间:2021-06-20 18:31:34

标签: jenkins-pipeline

我不知道为什么我不能让它工作,但可以使用一些帮助。

我有一个定义了矩阵的 Jenkins 管道,其中一个轴被定义为 Windows 或 linux 的操作系统。

在我的一个阶段,如果操作系统是 linux 或 windows,我想调用不同的东西,但我一直收到错误

java.lang.NoSuchMethodError: No such DSL method '$' found among steps [ArtifactoryGradleBuild, MavenDescriptorStep, acceptGitLabMR, addEmbeddableBadgeConfiguration, addGitLabMRComment, 

我的矩阵是这样定义的

matrix {
    agent { 
        label ("${DUT} && ${OS}")
    }
    axes {
        axis {
            name 'BUILD_TYPE'
            values 'Internal'
        }
        axis {
            name 'DUT'
            values 'DUT'
        }
        axis {
            name 'OS'
            values 'windows', 'linux'
        }
    }

我的舞台是这样定义的

stage ("Cleaning System") {
    steps {
        script {
            if (${OS} == 'windows') {
                stage ('Cleaning Up Windows System') {
                    echo "WINDOWS CLEAN"
                }
            }
            if (${OS} == 'linux') {
                stage ('Cleaning Up Linux System') {
                    echo "LINUX CLEAN"
                }
            }
        }
    }
}

它似乎不知道脚本块中的 ${var} 语法?或者我做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:1)

您不需要在比较中使用 $: 应该是:

if (OS == 'windows') {
  ...
}
if (OS == 'linux') {
  ...
}
相关问题