При загрузке сценария конвейера из другого сценария конвейера два конвейера не выполняются на одном и том же узле: первый выполняется на моем главном узле, а второй выполняется на подчиненном узле.
Я использую конвейеры Jenkins с опцией Pipeline Script from SCM
для множества заданий таким образом:
Каждое из моих заданий определяет соответствующий URL-адрес репозитория Git с параметром
Poll SCM
, чтобы репозиторий автоматически опрашивался при внесении изменений в мой код (базовое использование задания).Каждое из моих заданий определяет простой
Jenkinsfile
в корне своего репозитория, а сценарий конвейера внутри в основном не делает ничего, кроме загрузки более общего конвейера.
E.g. :
node {
// --- Load the generic pipeline ---
checkout scm: [$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://github/owner/pipeline-repo.git']]]
load 'common-pipeline.groovy'
}()
Мой конвейер common-pipeline.groovy выполняет фактическую работу, такую как создание, выпуск или развертывание артефактов, например :
{ ->
node() {
def functions = load 'common/functions.groovy'
functions.build()
functions.release()
functions.deploy()
}
}
Теперь я не хочу форсировать узел для каждого задания, поэтому оба конвейера имеют node("master")
или node("remote")
, потому что я действительно не хочу обрабатывать это вручную, но я бы хотел, чтобы когда-то первый конвейер выполняется на определенном узле (либо master, slave1, slave2, slave3) выполняется второй / загруженный конвейер на том же узле, потому что в противном случае мой фактический код репозитория Git недоступен из рабочей области другого узла ...
Есть ли способ указать, что я хочу, чтобы мой второй конвейер выполнялся на том же узле, что и первый, или, может быть, передать аргумент при использовании шага load
?