将变量传递到另一个管道Jenkins

时间:2018-10-16 11:06:28

标签: jenkins devops

我的目标是从pipeApipeB中获取变量。

pipeA完成后,它将创建新的应用程序版本并将其上传到AWS S3。

pipeB中,我想获取所有已上传到S3的应用程序版本,因此我需要将appNames传递到某个地方。

然后,当我使用参数构建pipeB时,我想在构建之前获取所有appName作为参数,但是我不知道怎么做。

Jenkins ver: 2.141

Example pre build step

1 个答案:

答案 0 :(得分:0)

大规模修改工作流程是

  1. 询问S3变量
  2. 将此变量作为选择参数
  3. 在Jenkins UI上选择一些参数
  4. 执行管道

在这种情况下,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选项。