如何在 Jenkins 声明性管道 "options" 块中使用条件?

How to use conditions in Jenkins declarative pipeline "options" block?

我想根据全局变量以不同方式配置 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 块,或者至少当我尝试时它不起作用。

我偶然发现的

Sources/ideas 不起作用:1, 2, 3, 4, ,

试试这个:

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'
    ))
}