Назад | Перейти на главную страницу

Дженкинс - вернуть что-нибудь с детской работы

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