如何在jenkins中将输出从一个管道传递到另一个管道

时间:2016-07-11 10:13:28

标签: jenkins parameters jenkins-pipeline

我是Jenkins的新手,我的任务是将输出从一个管道传递到另一个管道。

让我们说第一个管道有一个脚本,上面写着echo HelloWorld,我如何将这个输出传递给另一个管道,所以它显示相同的东西。

我已经查看了参数化触发器和其他几个答案,但我希望有人能够将逐步程序布局给我。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果你想纯粹使用Jenkins管道代码实现它 - 我所做的是有一个orchestrator管道作业,它在我的进程中构建所有管道作业,等待它们完成然后获取构建号:

Orchestrator工作

def result = build job: 'jobA'
def buildNumber = result.getNumber()
echo "jobA build number : ${buildNumber}"

在每个工作中,例如' jobA ',我安排将输出写入已知文件(例如属性文件),然后存档:

<强>职吧

writeFile encoding: 'utf-8', file: 'results.properties', text: 'a=123\r\nb=foo'

archiveArtifacts 'results.properties'

然后在构建每个作业(如 jobA )之后,使用内部版本号并使用Copy Artifacts插件将文件恢复到您的orchestrator作业中并按需要处理它:

Orchestrator工作

    step([$class     : 'CopyArtifact',
          filter     : 'results.properties',
          flatten    : true,
          projectName: 'jobA',
          selector   : [$class     : 'SpecificBuildSelector',
                        buildNumber: buildNumber.toString()]])

您会发现这些插件对于查看非常有用:

如果您正在链接作业而不是使用协调器 - 比如jobA构建jobB构建jobC等 - 那么您可以使用类似的方法。 CopyArtifacts可以从上游作业进行复制,也可以使用上游作业的内部版本号和名称传递参数。从链接作业更改后,我选择使用orchestrator作业,因为我需要并行构建一些作业。