как обновить задание Дженкинса и запустить его немедленно?

#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. Ага. Файл Дженкинса находится в репо, но задание не отслеживает репо. Он просто проверяет его и использует оттуда сценарии. Само задание запускается вовремя и проверяет наличие изменений в сетевом ресурсе, и если есть что-то новое, оно обновит другое задание и должно его запустить.