有一个詹金斯管道作业(“父”)。从它开始 - 在一个阶段调用另一个管道作业(“子” - 使用构建作业命令)。
有没有办法可以从子作业向父作业返回某些内容(例如短文本),而无需使用诸如人工智能之类的外部服务,并且不假设父作业和子作业在同一台机器上?
答案1
您可以使用 Jenkins 的内置工件来实现这一点。我喜欢为此使用 JSON,因为 Pipeline 具有内置readJSON
和writeJSON
方法。
例如,父作业的配置可能如下所示:
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