у меня есть конвейер1, который успешно выполняет блок сценария bash и работает нормально, НО когда я вызываю этот конвейер1 из конвейера2, блок сценария bash не выполнялся.
Другие команды отдельной строки sh да, выполняются нормально, и вывод отображается, но сценарий блока не выполняется.
Есть идеи?
Я имею в виду это:
трубопровод1
steps {
script{
sh "echo Hello1 world"
sh '''#!/bin/bash
sh "echo Hello2 world"
<commands>
'''
}
}
трубопровод2
steps {
build (job: '../../folfer1/pipeline1', parameters: [
...
], wait: true)
}
Затем выходные данные на конвейере2 показали:
echo 'Hello1 World'
echo 'Hello2 World'
но не выполнял shblock bash и не показывал никаких ошибок, только показывал Hello1 world
sh "echo Hello1 world"
sh '''#!/bin/bash
sh "echo Hello2 world"
<commands>
'''
воспроизводство
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/folder1/pipeline1
[Pipeline] {
[Pipeline] ansiColor
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Executing playbook playbook1)
[Pipeline] withEnv
[Pipeline] {
[Pipeline] script (hide)
[Pipeline] {
[Pipeline] echo
Hello1 world
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Резюме:
если я вызову этот конвейер1 из команд конвейера2 в блочный сценарий, он не будет выполняться, но если я запущу только конвейер1, результат и все выполнения будут в порядке!)
С уважением, Эду <всегда учусь
Привет, Итерокун. Просто молча пропускаю. Спасибо за вопросы.
Никогда раньше не видел, чтобы Дженкинс пропускал шаги, если только на каком-то предыдущем шаге не произошла ошибка. Как «вызвать» один конвейер из другого?
@Iterokun ``` шаги { build (job: '../../folder1/pipeline1', параметры: [ ... ], wait: true) } ```
Если вы добавите шаг echo 'Hello World'
после предположительно пропущенного шага sh
, вы увидите 'Hello World'
в журналах?
Я добавил 2 echo
до и после shblock bash и показал им оба.
Не могли бы вы добавить к вопросу минимальную репродукцию?
обновленный вопрос с этим тестированием, ты @Iterokun
Извините, это не репродукция. Ваш конвейер 1 завершится ошибкой, поскольку шаг sh
не разрешен за пределами блока node
.
обновите вопрос еще раз: я думаю, что это результат воспроизведения. И как я могу сделать шаг sh, чтобы разрешить выполнение снаружи? ты @Iterokun
Видите это [Pipeline] sh
в своем журнале? Шаг sh
был выполнен, но ничего не напечатано. Это легко проверить, добавив команду echo From Inside
в самом начале этого скрипта.
Привет @Iterokun, по твоей идее я обнаружил рабочий процесс тестирования echo
, который только не выполняет оператор for, расположенный в блоке sh bash вне его, все выполняется нормально. Снова обновлен вопрос: S, спасибо!
Итак, шаг sh
выполняется. Я считаю, что вы можете закрыть исходный вопрос.
Извини, приятель, это не интерактивный сеанс устранения неполадок. Вы задаете вопрос, и если на ваш первоначальный вопрос получен ответ, вы закрываете его, и мы все идем дальше.
ок, извини, я пойду это делать. Спасибо за все.
Хорошо, благодаря команде echo
я показал, где воспроизведение конвейера пропускает код выполнения. Спасибо @Iterokun
Что он делает вместо выполнения шага? Распечатать что-нибудь в журналах? Выходит из строя трубопровод? Просто молча пропускает?