Jenkins声明性管道中的参数可以是动态的吗?
我希望在运行时通过函数填充选项选项值 . 以下代码确实生成了一个选项列表,但它们似乎是陈旧的 - 可能是在我第一次运行此代码时生成的 . 如果AMI列表发生变化,则选择保持不变 . 我希望每次选择 build with parameters
时都会运行此选项 .
def findAMIs() {
// Find relevant AMIs based on their name
def sout = new StringBuffer(), serr = new StringBuffer()
def proc = '/usr/bin/aws --region eu-west-1 ec2 describe-images \
' --owners OWNER --filter Name=name,Values=PATTERN \
' --query Images[*].{AMI:Name} --output text'.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(10000)
return sout.tokenize()
}
def AMIs = findAMIs().join('\n')
pipeline {
// a declarative pipeline
agent any
parameters {
choice(name: 'Release',
choices: AMIs)
}
...
}
EDIT 我最终使用 jenkins-job-builder
,带有扩展选项参数 . 它目前不支持 groovyScript
参数,所以我修改了它https://review.openstack.org/#q,I0c6ac0b49c24b8d3afbc06b003847de2e043c2b8,n,z
3 回答
对于需要 declarative pipeline syntax 选项的任何人,我在another question找到了一个很好的解决方案,这对我很有帮助 .
这是基于它的我的建议 . 您应该能够使用创建
${WORKSPACE}/list
文件的代码生成更动态的列表我希望这有帮助
那么用户输入:
还有另一种解决方案:您可以在“管道”之前使用“属性”步骤 - 您也可以使用活动选择插件:
唯一的问题是,第一次启动构建时,它会失败 . 第二次启动它应该是“使用参数构建” .
希望能帮助到你 .