При загрузке конвейера script из другого конвейера script два конвейера не выполняются на одном и том же node: первый выполняется на моем master node, а второй выполняется на slave node.
Я использую конвейеры Jenkins с параметром Pipeline Script from SCM
для большого количества заданий таким образом:
-
Каждое из моих заданий определяет их соответствующий URL-адрес Git repo с параметром
Poll SCM
, чтобы репозиторий автоматически включался при изменении моего кода (основное использование задания). -
Каждое из моих заданий определяет простой
Jenkinsfile
в корне их репозитория, а конвейер script внутри в основном ничего, кроме загрузки более общего конвейера.
например.
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-pipe.groovy содержит фактические данные, такие как создание, выпуск или развертывание артефактов, например.
{ ->
node() {
def functions = load 'common/functions.groovy'
functions.build()
functions.release()
functions.deploy()
}
}
Теперь я не хочу заставлять node для каждого задания, чтобы оба конвейера имели node("master")
или node("remote")
, потому что я действительно не хочу обрабатывать это вручную, однако Я хотел бы, чтобы после того, как первый конвейер работает на определенном node (либо master, slave1, slave2, slave3), второй/загруженный конвейер выполняется на том же node, потому что в противном случае мой фактический Git код репозитория недоступно из другого рабочего пространства node...
Можно ли указать, что я хочу, чтобы мой второй конвейер выполнялся на одном и том же node в качестве первого или, возможно, передал аргумент при использовании шага load
?