Jenkins: build, install, test, notify: Смешиваем

…но не взбалтываем

Вся цепочка на данном этапе самостоятельно выполняться не начнет. Пока это лишь отдельный набор джоб. Тут в дело вступает Parameterized Trigger Plugin. Именно он - тот соус, что заставляет работать всю нашу систему как единое целое.

То как триггерится другая задача гибко настраивается. Я использовал в основном три вида передаваемых параметров. Всегда - Current Build Parameters, чтобы насквозь из первой джобы пробрасывать тикеты Jira. И Predefined parameters, либо Parameters from properties file. Предопределенные параметры сами выглядят как проперти-файл, а параметры из проперти файла для тех случаев, когда тот создавался, например, из питоновского скрипта - для передачи дальше.

Обратите внимание - переменные, которые были заинжекчены при помощи EnvInject Plugin не передаются вместе с Current Build Parameters. Так же, переменные билда перетираются переменными из файла и предопределенными параметрами. (Хотя это может зависеть от порядка, определенного в триггере - тут стоит потестить).

Соответственно дополнительно выбраны условия - триггерить если сборка успешная, и не триггерить, если указанный файл пропертей отстутствует.

img-build-plugin

Недосолено

С этим плагином тоже вышло не очень круто с кириллицей - на момент версии 2.21 - плагин использует java 1.5, в которой проперти читаются только в кодировке Latin 1. Что подразумевает под собой юникод-эскейпинг всего, что не латинница. Соответственно простая кириллица превращается в нечто нечитаемое. Пока ждем принятия пулл реквеста, где я попытался это исправить.

Варим, подаем к столу

Помимо оптимизации самих джоб на предмет собственных плагинов, у нас еще широкие планы отдать в группу установки-запуска тестов еще несколько машин, чтобы полностью освободить наших тестировщиков от установки пакета на стенд вручную и запуска тестов. Чтобы только отчеты смотреть.

Хочу добавить, что это реально удобно. И действительно может работать. На приготовление такого супа было потрачено около двух полных дней с учетом написания всех скриптов для поддержки работы, и ловли мелких багов, а так же формирования вида комментариев для Jira. Экономит же это примерно по полчаса каждому разработчику на каждом пакете. Несложно посчитать как скоро потраченное время окупится. Притом что готовится это проще пиццы на голодный желудок :)

Список использованных плагинов

Статьи из этой серии:

  • [Прежде чем готовить кастрюлю] - вводная
  • [Рубим скорлупу] - билд пакета, установка на машину
  • [Чистим змей] - быстрое прототипирование и python
  • [Варим кофе] - есть место и для java