Выполнить код до запуска Jenkinsfile

Мы используем Jenkinsfileв git-репозиториях, чтобы определить, как должен выполняться Jenkins CI.

Можно ли внедрить некоторый код, шаг или тому подобное до выполнения конвейера, определенного Jenkinsfile из репозитория? Иногда нам нужно добавить несколько шагов до запуска наших конвейеров.

Пример выполнения задания maven: файл Jenkins содержит шаги clone, build, test, install. Таким образом, выполнение задания конвейера создаст конвейер с шагами:

cloneFromGit->buildMvn->testMvn->installMvn

Однако мы должны убедиться, что все артефакты сборки (фляги и тому подобное) попадают в наш репозиторий артефактов. Нам нужна возможность обновить / изменить файл Jenkinsfile для добавления дополнительных шагов. Используя приведенный выше пример, нам нужно, чтобы конвейер запустил следующие шаги:

cloneFromGit->buildMvn->testMvn->installMvn->pushToArtifactRepository

Навязчивым / простым способом является добавление pushToArifactRepositoryшаг ко всем файлам Jenkins, однако мы не имеем (и не хотим) контролировать содержимое любого Jenkinsfile,

1 ответ

Решение

Я могу рекомендовать использовать глобальную библиотеку Jenkins Workflow. Здесь вы можете определить функциональность, которая используется разными конвейерными заданиями. Это, однако, потребует, чтобы каждый Jenkinsfile активно называет эту задачу "постстройка". Фактическая реализация этой задачи может быть скрыта в глобальной библиотеке, поэтому Jenkinsfile может быть очень простым.

В примере, который я использую, мой Jenkinsfile s только запускает конвейерное выполнение следующим образом:

def pipe = new org.typo3.chefci.v1.Pipeline()
pipe.execute()

Фактическая реализация находится в центральном хранилище.

Другие вопросы по тегам