将Python脚本中的值列表返回到Jenkins管道

时间:2017-12-11 14:11:12

标签: python jenkins jenkins-pipeline

我有一个jenkins管道,其中包含以下3个阶段(仅描述):

第1阶段:调用python脚本,该脚本应返回应为其构建新版本的版本号列表

第2阶段:调用Jenkins-Jobs,为第1阶段的每个版本号并行构建。

第3阶段:所有构建的作业完成后,对构建的版本执行其他操作。

我得到的问题是,我不知道如何处理python脚本的输出。如何使用从python函数返回的列表,用于以下阶段?

我通过bat命令调用python脚本。我看到,有可能通过returnStdout标志重定向批处理命令的输出,但这只传递python脚本的输出。

我能想到的一个可能性是将列表存储在工作区中的json文件中,然后在管道中使用readJson将其读回。但也许有更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

由于您使用的是Pipeline DSL,因此可以使用Groovy处理对bat

的调用结果
pipeline {
    agent any
    steps {
        step('Get Build Numbers') {
            script {
                def version_numbers = bat(script: 'python get_version_numbers.py', returnStdout: true)
                def versions_as_array = version_numbers.split('\n')
            }
        }
    }
}

从那里开始,需要生成构建步骤并将它们包装在并行块中。为此,请看一下这个答案:Ideas to implement dynamic parallel build using jenkins pipeline plugin