詹金斯-从子作业中返回一些东西

詹金斯-从子作业中返回一些东西

有一个詹金斯管道作业(“父”)。从它开始 - 在一个阶段调用另一个管道作业(“子” - 使用构建作业命令)。

有没有办法可以从子作业向父作业返回某些内容(例如短文本),而无需使用诸如人工智能之类的外部服务,并且不假设父作业和子作业在同一台机器上?

答案1

您可以使用 Jenkins 的内置工件来实现这一点。我喜欢为此使用 JSON,因为 Pipeline 具有内置readJSONwriteJSON方法。

例如,父作业的配置可能如下所示:

build job: "myproject", wait: true

step([
  $class: 'CopyArtifact',
  filter: 'mydata.json',
  projectName: "myproject",
])

if (fileExists("mydata.json")) {
  mydata = readJSON file: "mydata.json"
  myvalue = mydata.mykey
}

然后,你的子作业需要将mydata.json文件写入其管道作业配置中的某个工件存储中,例如:

mydata = [mykey: 'myvalue']
writeJSON file: 'mydata.json', json: mydata

archiveArtifacts artifacts: 'mydata.json', onlyIfSuccessful: true

相关内容