Groovy 如何在Jenkins工作流中编辑生成参数?

Groovy 如何在Jenkins工作流中编辑生成参数?,groovy,jenkins,parameters,workflow,Groovy,Jenkins,Parameters,Workflow,我知道您可以直接在Jenkins工作流中访问构建参数。我有一个名为BRANCH_REVISION的参数,需要对其进行更新,以便对XMLAPI的调用将显示新值,而不是原始值。这是我在非工作流脚本中使用以下groovy代码段所做的事情: def currentParamActions = build.getAction(ParametersAction.class) def currentParams = currentParamActions.getParameters() currentPar

我知道您可以直接在Jenkins工作流中访问构建参数。我有一个名为BRANCH_REVISION的参数,需要对其进行更新,以便对XMLAPI的调用将显示新值,而不是原始值。这是我在非工作流脚本中使用以下groovy代码段所做的事情:

def currentParamActions = build.getAction(ParametersAction.class)
def currentParams = currentParamActions.getParameters()

currentParams.each() {
    if ( it.name.equals("BRANCH_REVISION") ) {
        newParams.add( new StringParameterValue("BRANCH_REVISION", newRevision ) )
    }
    else {
        newParams.add( it )
    }
}

build.actions.remove(currentParamActions)
new_param_actions = currentParamActions.createUpdated(newParams)
build.actions.add(new_param_actions)
但是,这在工作流中似乎不起作用,因为无法访问生成对象。提前感谢您的帮助

见→ 工作流→ ☑ 代码段生成器→ 全局变量→ 变量:currentBuild:

currentBuild
变量可用于引用当前运行的生成。它是一个类似于为
build
步骤的返回值记录的对象


请在问题中的代码中使用
currentBuild.build()
而不是
build
,根据这是
currentBuild
的类型,谢谢您的回答。我查看了currentBuild变量,但我无法找出如何使用它覆盖现有参数的值。你对此有进一步的了解吗?@Josh我建议尝试将你问题中代码中的
build
替换为
currentBuild
。不幸的是,据我所知,currentBuild没有大多数可用于构建的方法,包括对设置操作的任何访问。感谢您抽出时间更新您的答案。您的解决方案工作正常,它成功地更新了参数,但在代码中的下一步,当我尝试使用node()命令启动作业时,出现“java.io.NotSerializableException:hudson.model.ParametersAction”错误并终止脚本。我尝试将参数更改代码放入@NonCPS函数,但不幸的是,这并没有解决问题。@Josh我认为“代码的下一步”应该有自己的问题。如果您觉得这个答案有用,请参阅。