Как я могу запустить сборку другой работы изнутри Jenkinsfile
?
Я предполагаю, что эта работа - еще один репозиторий в той же организации github , в которой уже есть собственный файл Jenkins.
Я также хочу сделать это только в том случае, если имя ветки master, так как нет смысла запускать нисходящие сборки любых локальных веток.
Обновить:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Тем не менее, при выполнении я получаю ошибку
Не найдено параметризованного задания с именем some-downtream-job-name
Я уверен, что это задание существует в jenkins и находится в той же папке организации, что и текущая. Это другая работа, которая имеет свою Jenkinsfile
.
Обратите внимание, что этот вопрос относится к подключаемому модулю GitHub Organization, который автоматически создает и поддерживает задания для каждого репозитория и ветви из вашей организации GitHub.
build job: '../other-repo/master', wait: false
build job: '../other-repo/$BRANCH_NAME'
где$BRANCH_NAME
находится переменная среды Jenkins, относящаяся к ветви, выполняющей проект Multibranch?${BRANCH_NAME}
доступно как переменная окружения, подойдет простая подстановка строк. Просто не забудьте переключиться"
с,'
чтобы процитировать вашу строку. напримерbuild job: "../other-repo/${BRANCH_NAME}"
build job
: jenkins.io/doc/pipeline/steps/pipeline-build-stepВ дополнение к вышеупомянутым ответам: я хотел начать работу с простого параметра, переданного во второй конвейер, и нашел ответ по адресу https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow .
Так что я использовал:
источник
build
командой? Как получить доступ к BUILD_NUMBER на одном из следующих этапов? Кто-нибудь знает, где эта команда задокументирована?build job: 'freestyle', parameters: [ string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
настоящее время, из jenkins.io/doc/pipeline/examples/#jobs-in-parallelbuild job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
что у меня не получилось, но:build job: 'RunArtInTest', parameters: [string(name: 'systemname', value: "${VALUE}")]
сработалоКоманда
build
в pipe предназначена для запуска других заданий в jenkins.Пример на github
Работа должна существовать в Jenkins и может быть параметризована. Что касается ветки, я думаю, вы можете прочитать это из Git
источник
build job: 'jobname
но я получаю эту ошибку,No parameterized job named jobname found
и я могу заверить вас, что в папке организации есть работа с таким именем на том же уровне.build job: "${ORGANISATION_NAME}/${REPO_NAME}/master"
/
. Относительные пути в порядке; Проблема Сорина состояла, вероятно, в том, что вызов работыbuild
был многоотраслевым, что означает, что путь, подобный тому,jobname
будет пытаться построить веткуjobname
той же самой работы; это должно быть../jobname/branchname
вместо этогоВы можете использовать
build job
шаг из Jenkins Pipeline (минимальное требование Jenkins: 2.130).Вот полный API для этого
build
шага: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/Как использовать
build
:job
: Имя последующей работы для создания. Может быть другая работа Pipeline, но чаще это фристайл или другой проект.../sister-folder/downstream
/top-level-folder/nested-folder/downstream
Запустить другую работу, используя ветку в качестве параметра
В моей компании многие наши филиалы включают "/". Вы должны заменить любые экземпляры "/" на "% 2F" (как это указано в URL-адресе задания).
В этом примере мы используем относительные пути
Запустить другую работу, используя номер сборки в качестве параметра
Запускать много рабочих мест параллельно
Источник: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
Больше информации о Parallel здесь: https://jenkins.io/doc/book/pipeline/syntax/#parallel
Или в качестве альтернативы:
источник
Используйте плагин сборки задания для этой задачи, чтобы запускать другие задания из файла jenkins. Вы можете добавить разнообразную логику к своему исполнению, такую как параметры параллели, узла и агентов и шаги для запуска внешних заданий. Для этого я привел несколько легко читаемых примеров поваренной книги.
1. Пример запуска внешнего задания из файла jenkins с условным примером:
2. Пример запуска нескольких заданий из файла jenkins с примером условия:
источник