如何在Jenkins声明式管道“选项”块中使用条件?

时间:2020-08-26 11:49:17

标签: jenkins continuous-integration jenkins-pipeline jenkins-declarative-pipeline

我想根据全局变量不同地配置buildDiscarder。目前我有

options {
    buildDiscarder(logRotator(numToKeepStr: '5'))
}

但是我正在寻找类似的东西

// BROKEN
options {
    if ("${SOME_VAR}" == 'some_val') {
        buildDiscarder(logRotator(numToKeepStr: '5'))
    } else {
        buildDiscarder(logRotator(daysToKeepStr: '7'))
    }
}

在Jenkins声明式管道中是否有任何方法可以实现这种行为?我认为我不能在此处使用script / when / expression块,或者至少在我尝试时不起作用。

我偶然发现的无效的来源/想法:12345,{{ 3}}

1 个答案:

答案 0 :(得分:1)

尝试一下:

options {
    buildDiscarder(logRotator(numToKeepStr: ("${SOME_VAR}" == 'some_val') ? '5' : '7'))
}

如果要使用其他参数,只需将“未使用的”参数设置为'-1'

options {
    buildDiscarder(logRotator(
            numToKeepStr: ("${SOME_VAR}" == 'some_val') ? '5' : '-1',
            daysToKeepStr: ("${SOME_VAR}" == 'some_val') ? '-1' : '7'
    ))
}