Дженкинс: Создание многоотраслевого конвейера с файлом jenkins из другого репо - PullRequest
0 голосов
/ 12 января 2019

Итак, я пытаюсь создать многоотраслевой конвейер для нескольких разных проектов.

Это основные требования:

  1. три задания, этап, продукт для каждого клиента
  2. за каждую работу, вытащить соответствующую ветку из каждого репо и построить бота
  3. Если что-то изменится в репо, используемом заданием, запустить сборку для этой среды

Так что эти требования довольно просты.

Но есть четвертое требование. Я пытаюсь понять, могу ли я иметь репо, в котором могут храниться все мои файлы jenkins, а затем создать все ветви другого репо. Это возможно? Все остальные ответы, по-видимому, указывают на устаревшие решения, такие как проект многоотраслевого фристайла.

1 Ответ

0 голосов
/ 12 января 2019

Можно ли построить многоотраслевой конвейер с файлом jenkins из другого репо?

Краткий ответ: Нет, это не так, поскольку каждое задание в многоотраслевом конвейере всегда ссылается на Jenkinsfile из одной и той же ветви (следовательно, из того же репо), для которого он настроен для мониторинга. А ветки, которые не содержат Jenkinsfile, не индексируются.

Расширенный ответ: Чтобы добиться более или менее того, о чем вы просите, я бы сделал следующее:

  1. Создание репозитория с пользовательским Jenkinsfiles (для каждой ветви, для каждого клиента, для каждого env ... и т. Д.). Каждый Jenkinsfile будет описывать этапы, которые вы хотите выполнить в каждом конкретном случае. Использовать Синтаксис скриптового конвейера .
  2. Добавьте еще один Jenkinfile к вашему репо продукта, где вы: извлекаете выделенное репо с вашими пользовательскими конвейерами, загружаете конвейер и выполняете его.
  3. Настройка многоотраслевого конвейера для репо продукта.

* * Пример тысячи двадцать-шести * ** 1 028 +1029 *

git@github.com: ваш-орг / заказ pipelines.git / Jenkinsfile-DEV

// Jenkinsfile-dev

def stages() {
    stage ("Checkout") {
        checkout scm
    }

    stage ("Build") {

    }

    stage ("Test") {

    }
}

return this

git@github.com: ваш-орг / продукт-repo.git / Jenkinsfile

// Jenkinsfile

node ("ubuntu") {
    // Checkout custom Jenkinsfiles
    stage ("Checkout pipelines") {
        git url: "git@github.com:your-org/custom-pipelines.git", 
            branch: "master", 
            credentialsId: "github-ssh"
    }

    load ("Jenkinsfile-${env.BRANCH_NAME}").stages()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...