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

Jenkins Pipeline - If/Else Statement with Matrix Name vars

我不知道为什么我不能让它工作,但需要一些帮助。

我有一个定义了矩阵的 Jenkins 管道,其中一个轴定义为 OS for windows or linux.

在我的一个舞台上,如果 OS 是 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} 语法?或者我做错了什么? 谢谢!

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

if (OS == 'windows') {
  ...
}
if (OS == 'linux') {
  ...
}