我的目标是从pipeA
到pipeB
中获取变量。
pipeA完成后,它将创建新的应用程序版本并将其上传到AWS S3。
在pipeB
中,我想获取所有已上传到S3的应用程序版本,因此我需要将appNames传递到某个地方。
然后,当我使用参数构建pipeB
时,我想在构建之前获取所有appName作为参数,但是我不知道怎么做。
Jenkins ver: 2.141
答案 0 :(得分:0)
大规模修改工作流程是
在这种情况下,Active Choices Reactive Parameter
在内部使用带有return的常规脚本。例如:
//S3 file request
response = ["curl", "-k",
"-H", "Host: ${bucket}.s3.amazonaws.com",
"-H", "Date: ${dateValue}",
"-H", "Authorization: AWS ${s3Key}:${signature}",
"https://${bucket}.s3.amazonaws.com/${file}"].execute().text
def choices = []
response.eachLine {
if (it.contains("Not Found")) {choices.push("There is no file")}
//here parse your file, in my example is flat custom text
else {
if (!it.contains(" ")) {
param= it.replace(":", "")
choices.push(param)
}
}
}
def clean = choices.findAll { item -> !item.isEmpty() }
return clean.sort()
这样,您需要插入一些参数,当然,最简单的方法是在groovy脚本中以纯文本定义它:
def bucket = '13dfvcqe'
def dateValue = '123'
def s3Key = '1452234F'
def signature = '2133'
def file = 'vars'
这是简单且危险的:)更好的选择是在该参数之前使用Jenkins password parameter
填充此机密值,并使用Referenced parameters
选项。