Вывод этого python eval выглядит так, как будто это могут быть этапы в конвейере jenkins
$ python3 -c 'print("\n".join(["stage({val}) {{ do something with {val} }}".format(val=i) for i in range(3)]))'
stage(0) { do something with 0 }
stage(1) { do something with 1 }
stage(2) { do something with 2 }
Возможно ли, чтобы jenkins использовал вывод, подобный этому, для создания шагов или этапов вконвейер, чтобы работающий скрипт на python мог обновлять jenkins? Смысл этого в том, чтобы у конвейера Blue Ocean была точка этапа, созданная внешним сценарием, выполняющим отдельные задания.
Чтобы пояснить пример ... если это сценарий demo.py, который выводит время безотказной работына этапе
#!/bin/env python3.6
import subprocess, time
def uptime():
return (subprocess.run('uptime', stdout=subprocess.PIPE, encoding='utf8')).stdout.strip()
for i in range(3):
print("stage({val}) {{\n echo \"{output}\" \n}}".format(val=i, output=uptime()))
time.sleep(1)
, где необходимо настроить конвейер Дженкинса
node {
stage("start demo"){
sh "/tmp/demo.py"
}
}
Как и в этом демонстрационном примере, просто выводится текст и не создаются никакие этапы в синем океане
[Pipeline] sh
+ /tmp/demo.py
stage(0) {
echo "03:17:16 up 182 days, 12:17, 8 users, load average: 0.00, 0.03, 0.05"
}
stage(1) {
echo "03:17:17 up 182 days, 12:17, 8 users, load average: 0.00, 0.03, 0.05"
}
stage(2) {
echo "03:17:18 up 182 days, 12:17, 8 users, load average: 0.00, 0.03, 0.05"
}
Опять же, смысл в том, чтобы у трубопровода Blue Ocean была точка сцены с бревном