您有两种选择。
在您的jenkins文件中,处理后再次调用属性。
#!groovy
@Library('shared') _
properties()
// Do pipeline
properties()
def properties() {
// Set Jenkins job properties
properties([
buildDiscarder(logRotator(numToKeepStr: '20')),
parameters([//params])
])
}
亲的,简单吗?缺点:只有在步骤成功并且不提前退出时才有效。
替代方案:在构建期间动态调整(我们将这些函数放在共享库中,并在我们需要更新参数(如工件列表)时调用它们)。注意:可能需要脚本安全审批
/**
* Change param value during build
*
* @param paramName new or existing param name
* @param paramValue param value
* @return nothing
*/
def setParam(String paramName, String paramValue) {
List<ParameterValue> newParams = new ArrayList<>();
newParams.add(new StringParameterValue(paramName, paramValue))
$build().addOrReplaceAction($build().getAction(ParametersAction.class).createUpdated(newParams))
}
/**
* Add a new option to choice parameter for the current job
*
* @param paramName parameter name
* @param optionValue option value
* @return nothing
*/
def addChoice(String paramName, String optionValue) {
addChoice($build().getParent(), paramName, optionValue)
}
在上述情况下,这些方法存在于共享库内的/ vars中。 /vars/jobParams.groovy。因此,从Jenkinsfile或其他共享库中,可以使用以下语法调用这些文件:
jobParams.addChoice("ARTIFACT_NAME", "da-name")
您是否曾想到这一点? – Mike
不,这个插件不再被分发,所以它不太可能在jenkins 2中被支持。也许[Extended choice parameter](https://wiki.jenkins.io/display/JENKINS/Extended+Choice+Parameter+plugin)plugin [可以做类似的事情](https://stackoverflow.com/a/46122406/2029354),但只能使用脚本管道(而不是声明式)和[它在蓝色海洋中播放不好](https://gist.github .com/jgraglia/44a7443847cff6f0d87387a46c7bb82f#gistcomment-2158077) – Albert