Выполнить код до выполнения Jenkinsfile

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

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

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

cloneFromGit->buildMvn->testMvn->installMvn

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

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

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


person Jon Brohauge    schedule 18.08.2016    source источник


Ответы (1)


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

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

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

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

person StephenKing    schedule 18.08.2016
comment
Это то, о чем я думал. В настоящее время мы используем глобальную библиотеку для необязательных вещей. Мы действительно не хотим навязывать обязательный последний шаг во всех Jenkinsfiles, но если это единственный способ, пусть будет так. - person Jon Brohauge; 19.08.2016
comment
Я имею в виду, что эта проблема на самом деле не связана с jenkins-pipeline. Есть, например. Global Post Script Plugin (никогда не использовал его лично ), который может выполнять ваш код после каждой сборки. Не знаю, работает ли это и с WorkflowJob. - person StephenKing; 19.08.2016