Плагин 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 с тем же именем назначения, но по крайней мере оно осталось в исходном представлении:)

Другие вопросы по тегам