Где хранить Jenkinsfile для последующего конвейера без собственного репо - PullRequest
0 голосов
/ 31 октября 2019

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

На данный момент мы имеем следующую настройку конвейера:

  • repoA / Jenkinsfile - конвейер A - сборка, запуск модульных тестов и создание артефакта
  • repo B / Jenkinsfile - конвейер B - сборка, запуск модульных тестов и создание артефакта

всякий раз, когда конвейер A илиЗавершение B Я хочу запустить конвейер C.

  • Конвейер C должен взять артефакты последних конвейеров A и B, упаковать их вместе как образ докера, выполнить интеграционные тесты, развернуть в промежуточной среде.

Где я должен хранить Jenkinsfile для Pipeline C, поскольку у него нет собственного репо-источника?

Для меня это логически выглядит как отдельный конвейер, которыйвниз по течению от A и B, поэтому предположим, что это принадлежит отдельному файлу Jenkinsfile, но тогда, куда это пойдет в управлении исходным кодом. Чтобы уточнить, я бы хотел, чтобы все мои файлы конвейера находились под контролем исходного кода.

В качестве альтернативы я должен попытаться определить весь конвейер (включая интеграцию и т. Д.) Только в одном из родительских конвейеров , пропуская часть сборки, когда она запускается из другого конвейера? Оставляя другого как простую сборку. Например,

  • Трубопровод A (полный конвейер)

    • сборка
    • модульные тесты
    • артефакт
    • (получить последний артефакт B)
    • интеграционный тест
    • развертывание в стадии
  • Pipeline B (простая сборка, в которой затем используется полный конвейер)

    • сборка
    • модульные тесты
    • артефакт
    • запускает конвейер A, пропуская все до шага интеграционного теста (возможно с использованием * 1057)* блоки на тех этапах, которые смотрят на триггер сборки?)

Я могу найти ресурсы либо для сборки, либо для запуска одного конвейера из другого, например: https://metamorphant.de/blog/posts/2019-03-11-jenkins-101-downstream-projects/ но нет информации о структурировании вышеуказанных зависимостей и конвейеров в Jenkins Pipeline.

1 Ответ

0 голосов
/ 05 ноября 2019

Когда вы определяете «новый элемент» в Jenkins и выбираете тип проекта «Конвейер», вы получаете форму, когда для Конвейера по умолчанию установлено значение «Конвейер сценарий». Если у вас есть Jenkinsfile, то вы переключаетесь на использование «Конвейерного скрипта из SCM» и устанавливаете его так, чтобы он указывал на местоположение GIT Jenkinsfile, но если вы оставляете его «Конвейерным скриптом» по умолчанию, вы можете поместить содержимоеконвейер внутри формы, и он будет сохранен в файле config.xml задания без необходимости сохранять его в системе контроля версий.

...