Выполнить код до запуска 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()
Фактическая реализация находится в центральном хранилище.