#jenkins #groovy #jenkins-pipeline #dsl #jenkins-job-dsl
Вопрос:
Привет, ребята, Пользователи Дженкина,
короче говоря: Можно ли обновить задание и запустить его сразу после обновления с применением новых значений параметров?
Почему я спрашиваю об этом? В настоящее время я начинаю работать над существующим конвейером Дженкинса, в котором есть ошибка. Существует одно задание, которое сканирует некоторые папки и запускает второе задание в другом конвейере с новыми папками в качестве параметра. Когда я обновляю задание и запускаю его сразу после этого, параметр нового задания не обновляется.
Итак, в scan.goovy
моем коде есть такой:
// creates or updates a pipeline job pipelineJob("secondJob") { stringParam('Folders', folders,'New folders') ... } // start job queue("secondJob")
На данный момент я разделил scan.groovy
файл на два файла. Один скрипт scan_folder.groovy
, который сканирует папки, и другой отличный скрипт start_new_job.groovy
, который запускает второе задание, потому что обновление применяется только после завершения scan_folder.groovy
DSL. Затем я настраиваю конвейер для запуска двух сценариев.
Поскольку было бы намного чище иметь только один *.groovy
файл, я бы предпочел обновить задание и запустить его из того же файла. Возможно ли это каким-то образом? Я пропустил что-то вроде flush() или commit() или что-то еще?
Я был бы признателен за каждый полезный ответ, даже если вы просто дадите мне подсказку, где найти ресурсы, чтобы научиться такой сверхспособности.
Комментарии:
1. вы пробовали
Poll SCM
вариант? он будет следить за любыми обновлениями вашего репо и начнет работу, если найдет его2. Дело в том, что эти папки не просматриваются никакими SCM, они являются просто общим сетевым ресурсом.
3. я имел в виду ваш собственный файл Дженкинса. Это должно быть в каком-то репо, верно? если работа Дженкинса просто следит за тем, чтобы она начиналась всякий раз, когда что-то меняется в репо
4. Ага. Файл Дженкинса находится в репо, но задание не отслеживает репо. Он просто проверяет его и использует оттуда сценарии. Само задание запускается вовремя и проверяет наличие изменений в сетевом ресурсе, и если есть что-то новое, оно обновит другое задание и должно его запустить.