Jenkins Job DSL - поведение зависит от содержимого файла

Я унаследовал систему, которая использует Jenkins Job DSL для создания заданий для всех наших проектов, у меня мало опыта настройки Jenkins и совсем нет опыта работы с Jenkins Job DSL, поэтому, пожалуйста, будьте осторожны.

Некоторые из этих проектов являются проектами Gradle. Существует функция createGradleJob(), которая создает задание gradle. В этой функции мы строим список задач для задания в виде строки на основе некоторых особенностей проекта. например если он создается из основной ветки, мы добавляем задачу «публикации». Все эти условные задачи в настоящее время добавляются на основе имени ветки проектов или наличия или отсутствия определенных файлов в репозитории проектов.

Теперь я хотел бы добавить новую задачу в этот список задач в зависимости от содержимого некоторых из этих файлов. В частности, если в файле проекта build.gradle обнаружены определенные ключевые слова, то определенные задачи необходимо добавить в список задач.

Итак, есть ли в Jenkins Job DSL способ проверить содержимое файла и использовать его в качестве условного выражения?

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

Я нашел функцию textFinder, но она, по-видимому, позволяет вам завершить сборку (или пометить ее как нестабильную) только в результате обнаружения или невозможности найти текст, а не использовать результат в качестве условное выражение.


person Simon Hartley    schedule 05.05.2016    source источник


Ответы (1)


Похоже, вы хотите readFileFromWorkspace . Он возвращает содержимое файла в виде строки. Просто прочитайте свой файл и проанализируйте строку по мере необходимости, используя утилиты Groovy и/или строки Java.

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

Найденная вами команда shell добавляет шаг сборки «Выполнение сценария оболочки» к создаваемому заданию. На самом деле он не выполняет сценарий тут же, он просто копирует содержимое параметра дословно в шаг сборки, готовый к выполнению, когда Дженкинс запускает задание.

Чтобы вы не теряли здравомыслия, вот ссылка на Документацию по API Job DSL

person badgerr    schedule 06.05.2016
comment
Спасибо, это выглядит на месте. - person Simon Hartley; 13.05.2016