Плагин Jenkins DSL: как создать работу в существующем представлении jenkins?
Я нашел следующий вопрос, касающийся создания рабочих мест и добавления во вновь созданное представление с помощью плагина DSL.
Добавление работы во вновь созданный вид.
Как я могу добавить созданную работу в существующее представление с помощью плагина DSL? Я не мог найти никаких подсказок в документации. Может быть, слишком очевидно, что я не вижу решения?
Хотя я читал, что создание представления вызовет повторное создание, если представление уже существует. Что означает, что для существующих проектов под этой точки зрения?
Спасибо за вашу помощь.
3 ответа
Вы не можете добавить задание в представление, которое не управляется заданием DSL. Но представления, управляемые DSL, могут содержать задания, которые не управляются DSL.
Например, вы можете иметь работу под названием project-a
который управляется вручную и задание называется project-b
который управляется DSL. И представление, управляемое DSL, может содержать оба задания.
job('project-b') {
}
listView('project-view') {
jobs {
name('project-a')
name('project-b')
}
}
Невозможно использовать Jenkins API для добавления задания в представление из сценария DSL. Задание должно существовать, прежде чем оно может быть добавлено в представление. Но когда сценарии выполняются, задание не создается сразу. Все элементы DSL создаются после обработки сценария.
Если вы не хотите управлять представлением с помощью DSL (но вам следует это делать), вы можете попробовать использовать конфигурацию представления на основе фильтров. Например, включите все задания с именем, соответствующим регулярному выражению. Или вы можете использовать плагин View Job Filters для создания более сложных фильтров.
Благодаря daspilker, с вашими данными я нашел приемлемое решение.
-> Фильтры просмотра
Требования: Просмотр Job Filter PLugin
Поскольку созданные DSL-задания не могут быть добавлены к представлениям, не созданным DSL, я установил два фильтра представлений.
один фильтр регулярных выражений для исключения заданий, созданных DSL, из представления по умолчанию (где задания будут создаваться, если вы не создадите представление DSL и не добавите в него задание) - выберите представление по умолчанию-> Изменить представление-> Добавить фильтр заданий ->regexpJobFilter
один фильтр представления регулярного выражения в представлении, где вы хотите собрать созданные DSL-задания.
На данный момент это работает нормально. У меня есть DSL созданные рабочие места в представлении, управляемом вручную.
Но как говорит деспилкер:
Если вы не хотите управлять представлением с помощью DSL (но вам следует)
Возможно опыт показывает, что я должен переключиться на управляемые представления DSL.
Я только что нашел очень простое решение этой проблемы - хотя следует помнить, что ответ @daspilker показывает правильный способ управления заданиями и представлениями. Просто это было слишком сложно для меня в это время (или было слишком лениво).
Временное решение:
- удалите работу, созданную вашим DSL
- скопировать (или запомнить) точное имя сгенерированного задания из DSL
- перейдите к представлению, в котором вы хотите разместить новую работу
- создайте новое пустое задание с тем же именем, что и новое сгенерированное задание из DSL.
- установите флажок Добавить в текущий вид при сохранении нового пустого задания
- запустите сценарий DSL, и он обновит существующее (пустое) задание с правильным содержимым, оставив его в нужном представлении.
Я просто пришел к этому решению, вспомнив, что однажды удалил (переписал) существующее задание из представления, запустив задание DSL с тем же именем назначения, но по крайней мере оно осталось в исходном представлении:)