2017-02-22 13 views
8

Например:Шаблон Jenkinsfile для всех проектов

У меня есть 30 многожанровых проектов Git. Все проекты имеют свой собственный файл Jenkins. И вдруг я нахожу классный плагин Jenkins, который я хочу добавить для всех проектов. Это боль, чтобы сделать это во всех проектах, и это большая трата времени.

Возможно ли создать что-то вроде шаблона Jenkinsfile, который будет чем-то вроде обертки для проекта Jenkinsfile или что-то вроде того, что дает мне возможность делать изменения в 1 месте вместо 30 мест?

То, что я хочу что-то вроде этого:

stage { 
...} 
timestamps { 
    <include rest of stages definied in projects> 
} 
stage { 
... } 

шаблона файл, который находится в некотором репо ищется как это. Все проекты имеют свои собственные этапы, которые включены в середину шаблона Jenkinsfile и определены в проекте.

Так Jenkinsfile в проекте необходимо: шаблон

  • нагрузки из репозитория
  • положенные этапы в середине шаблона Jenkinsfile
+0

Связанный с этим пример [шаблон конвейера Jenkins] (https://stackoverflow.com/a/44070069/542251) – Liam

ответ

4

Вы могли бы использовать:

  • Config File Provider Plugin using the configuration files in Jenkins Pipelines :

    node { 
        ... 
        configFileProvider(
        [configFile(fileId: 'jenkinsfile-template', ...)]) { 
         ... 
        } 
        ... 
    } 
    
  • load: Evaluate a Groovy source file into the Pipeline script:

    принимает имя файла в рабочем пространстве и запускает его в качестве источника Groovy текста.

  • Shared Libraries:

    Oftentimes полезно разделять части трубопроводов между различными проектами, чтобы уменьшить избыточность и сохранить код "DRY".

    Pipeline поддерживает создание «общих библиотек», которые могут быть определены в репозиториях внешнего источника и загружены в существующие трубопроводы.

+0

Я думаю, что смогу его использовать. Моя идея: В проекте будет Jenkinsfile и, например, Jenkinsfile_project. Обычный файл Jenkins будет загружать Jenkinsfile_template с использованием общих библиотек или configFile. Этот шаблон будет иметь некоторый символ типа% и с использованием сценария bash, который я заменил на Jenkinsfile_project. Этот объединенный файл Jenkinsfile будет помещен в папку сборки. После этого построенный файл Jenkins будет загружаться через команду загрузки и запускаться. – Kapitalny

5

Как я всегда говорю,

Друзья не позволяют друзьям код шаблона.

Как правило, мое последнее средство написать код, который, в свою очередь, генерирует больше кода. Кроме того, это не полезно в вашем случае использования.

Что вы действительно спрашиваете: «У меня есть код, который я хочу разделить между 30 Jenkinsfiles». Разумеется, лучший способ совместного использования кода - создать общую библиотеку и использовать ее из кода.

К счастью, this concept is fully supported in Jenkinsfiles. Я настоятельно рекомендую использовать его для вашего случая использования.Из введения пункта в ссылке, приведенной выше:

Как Pipeline, принимается все больше и больше проектов в организации, общие закономерности могут возникнуть. Зачастую полезно делиться частями трубопроводов между различными проектами для сокращения избыточности и сохранить код «СУХОЕ».

Pipeline поддерживает создание «общих библиотек», который может быть , определенный в репозиториях управления внешним источником и загруженный в существующих трубопроводов.

Затем просто обновите библиотеку, и все файлы Jenkinsfiles, которые ее используют, также будут обновлены. Вы можете выполнить версию вашей общей библиотеки, и настройка будет намного проще отлаживать.

Смежные вопросы