我有一个 jenkins 管道,其中包含以下 3 个阶段(仅描述):
第 1 阶段:调用 python 脚本,该脚本应返回应为其构建新版本的版本号列表
第 2 阶段:调用 Jenkins-Jobs 并行构建第 1 阶段的每个版本号。
第 3 阶段:所有构建作业完成后,使用构建版本执行其他操作。
我遇到的问题是,我不知道如何处理 python 脚本的输出。如何使用从 python 函数返回的列表用于以下阶段?
我通过 bat
命令调用 python 脚本。我看到,可以通过 returnStdout 标志重定向批处理命令的输出,但这只会传递 python 脚本的输出。
我能想到的一种可能性是将列表存储在工作区中的 json 文件中,然后使用管道中的 readJson
将其读回。但也许有一个更优雅的解决方案。
最佳答案
由于您使用的是 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')
}
}
}
}
从这里开始,就需要生成构建步骤并将它们包装在并行 block 中。为此,请看一下这个答案:Ideas to implement dynamic parallel build using jenkins pipeline plugin
关于python - 将 Python 脚本中的值列表返回到 Jenkins Pipeline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47754768/