Jenkins Workflow Multibranch позволяет указать путь к файлу Jenkins

Похоже, что теперь у вас может быть только один Jenkinsfile в одном месте в вашем проекте при использовании типа Multibranch.

Есть ли способ настроить, чтобы я мог разместить Jenkinsfile где-нибудь еще, а не в корне проекта, под именем Jenkinsfile. Есть надежда, поскольку есть опция фиксированной конфигурации, возможно, это функция на будущее, но я был бы очень признателен за эту возможность, так как в текущей ситуации у меня нет возможности запускать все как один красиво скомпилированный конвейер из-за размер репо. Я думаю о наличии нескольких заданий Jenkins в одном и том же репозитории.

- Маркус


person Oldek    schedule 17.05.2016    source источник
comment
Возможный дубликат Jenkins: как указать jenkinsfile в многоотраслевом проекте   -  person Gordon Tucker    schedule 07.05.2019


Ответы (2)


Начиная с Pipeline: Multibranch plugin версии 2.15, вы можете указать расположение Jenkinsfile в своей конфигурации.

См. Мой ответ на странице https://stackoverflow.com/a/45172149/2141666 и журнал изменений плагина на странице https://wiki.jenkins.io/display/JENKINS/Pipeline+Multibranch+Plugin . Из журнала изменений:

2.15 (01 июня 2017 г.)

JENKINS-34561 Возможность выбора имени / пути сценария, отличного от Jenkinsfile.

person Kdawg    schedule 18.07.2017

Я думаю, что столкнулся с подобной проблемой.

Что вы можете сделать, так это сохранить в другом месте другой файл «конвейера». Это может быть одна касса или другая касса вместе.

В этом файле вы можете определить методы, и вы должны завершить его, сказав «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;

Затем в файле Jenkins вы можете сделать следующее:

def steps
node {
    steps = load 'MyJenkinsPipelineScript.groovy'
    steps.initialize()
}

На основе любых переменных среды вы можете загружать разные файлы. Надеюсь, это поможет.

person Joost van der Griendt    schedule 14.06.2016