Jenkins Workflow Multibranch позволяет указывать путь Jenkinsfile
Кажется, что теперь вы можете иметь только один Jenkinsfile в одном месте в вашем проекте при использовании типа Multibranch.
Есть ли способ настроить так, чтобы я мог разместить Jenkinsfile где-нибудь еще, кроме корневого каталога проекта под именем Jenkinsfile. Есть надежда, так как есть опция Fixed Configuration, возможно, это функция на будущее, но я бы очень признательна за эту возможность, так как в текущей ситуации у меня нет возможности запускать все как один красиво скомпилированный конвейер из-за размер репо. Я думаю о том, чтобы иметь несколько рабочих мест в Jenkins для одного и того же хранилища.
- Маркус
2 ответа
Начиная с версии Pipeline: Multibranch plugin 2.15, вы можете указать расположение Jenkinsfile в вашей конфигурации.
Смотрите мой ответ на /questions/67861/dzhenkins-kak-ukazat-jenkinsfile-v-mnogootraslevom-proekte/67870#67870 и журнал изменений плагинов на https://wiki.jenkins.io/display/JENKINS/Pipeline+Multibranch+Plugin. Из журнала изменений:
2,15 (01 июня 2017 г.)
JENKINS-34561 Возможность выбрать имя / путь сценария, отличный от Jenkinsfile.
Я думаю, что столкнулся с подобной проблемой.
То, что вы можете сделать, - это сохранить другой "конвейерный" файл в другом месте. Это может быть один и тот же пункт оформления заказа или другой пункт оформления заказа вместе.
В этом файле вы можете определить методы, и вам нужно завершить с помощью команды "return this", чтобы запускаемый Jenkinsfile мог использовать второй скрипт. Пример:
def initialize(){
wrap([$class: 'BuildUser']) {
env.buildUserName = "$env.BUILD_USER"
env.buildUserId = "$env.BUILD_USER_ID"
env.buildUserEmail = "$env.BUILD_USER_EMAIL"
}
}
// Has to exist with 'return this;' in order to be used as library
return this;
В Jenkinsfile вы можете сделать следующее:
def steps
node {
steps = load 'MyJenkinsPipelineScript.groovy'
steps.initialize()
}
На основе любых переменных среды вы можете загружать разные файлы. Надеюсь, это поможет.