Есть работа по конвейеру Дженкинса («родитель»). Из него - на одном этапе вызывается другое задание конвейера («дочернее» - с помощью команды build job).
Есть ли способ вернуть что-то (например, короткий текст) из дочернего задания в родительское без использования внешних служб, таких как искусственные, и не предполагая, что родительские и дочерние задания находятся на одном компьютере?
Один из способов сделать это - использовать встроенные артефакты 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