Задания Нисходящего Трубопровода Jenkins Не Всегда Запускались Должным Образом

  • Автор темы Vityuk
  • Обновлено
  • 21, Oct 2024
  • #1

У меня есть три отдельных задания многоветвевого конвейера, настроенные в Jenkins, которые я хочу последовательно называть нисходящими заданиями. Обратите внимание, что все эти 3 вакансии имеют отдельный git-репозитории!

У каждого задания есть свой Jenkinsfile.

Первое задание всегда запускается мной вручную через пользовательский интерфейс Jenkins. На последнем этапе файла Jenkins первого задания запускается второе задание, как показано ниже. (Второе задание таким же образом запускает третье задание)

stage('Trigger second job')
{

steps {

build job: 'second_job_name', propagate: true, wait: false

}
}

Теперь этот шаг всегда кажется выполненным успешно, когда первое задание завершается, в журналах не появляется никаких ошибок или предупреждений. Это должно означать, что было вызвано второе нижестоящее задание, но, к сожалению, это не всегда так:

  • Иногда первое задание запускает второе задание, но второе задание никогда на самом деле не запускает третье, хотя, похоже, оно проходит соответствующий этап Jenkinsfile.
  • Иногда первое задание завершается, но второе задание вообще не запускается.

Единственный раз, когда эта установка работает должным образом, — это когда есть новые коммиты во все 3 репозитория git. Затем все 3 задания запускаются последовательно без проблем.

Кто-нибудь знает причину такого непоследовательного поведения?

Может быть, это потому, что задания основаны на разных репозиториях git?

Могу ли я что-нибудь сделать, чтобы это исправить?

Vityuk


Рег
21 Apr, 2014

Тем
77

Постов
186

Баллов
611
  • 25, Oct 2024
  • #2

Я подозреваю, что проблема в этом названии вакансии:

build job: 'my_project/my_repo/master'

В многоветвевом конвейере имя задания обычно содержит папки. Например, если у вас есть многоветвевой проект с именем «my_project», репозиторий в этом проекте с именем «my_repo» и ветка внутри этого репо, которую вы хотите построить, скажем «master», тогда ваша команда сборки будет выглядеть так:

build job: 'second_job_name'

Если в имени задания вы укажете только уровень проекта или репозитория, но не включите ветку, вместо запуска сборки для ветки Дженкинс будет сканировать обновления для всех ветвей в этом проекте/репо и создавать любые новые коммиты, которые он еще не создал. В результате возникают именно те симптомы, которые вы описали:

Единственный раз, когда эта настройка работает должным образом, — это когда во всех трех репозиториях git появляются новые коммиты. Затем все 3 задания запускаются последовательно без проблем.

 

Evgenye


Рег
31 Oct, 2009

Тем
74

Постов
168

Баллов
538
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно