В настоящее время я улучшаю процесс выпуска наших проектов на Jenkins (1.430).
Задания по текущему выпуску
Сегодня для одного конкретного проекта у нас есть одно задание, посвященное процессу выпуска. Полная процедура выглядит следующим образом:
mvn versions: set -DnewVersion = 2.0
), чтобы избавиться от -SNAPSHOT
. 2.1-SNAPSHOT
). Преимущество этого метода в том, что у меня есть только задание Jenkins, так как сборка будет основываться только на теге.
Однако эта процедура включает в себя слишком много человеческих вмешательств (изменения pom.xml, коммиты, теги и т. Д.).
Задания для новых выпусков
Теперь я использую плагин выпуска Maven. Я создал задание, которое запрашивает у пользователя, запускающего сборку, три информации:
releaseVersion
плагина релиза); developmentVersion
плагина релиза); тег
плагина выпуска). Это задание работает нормально, за исключением одного момента: задание основано на магистрали или на ветке в SVN. Это означает, что если у меня есть 2 ветки (помимо магистрали), я буду необходимо создать 3 рабочих места по выпуску: по одному на ветку.
Одна идея - сохранить лучшее из двух миров (т.е. использовать mvn release, но сохранить одно задание выпуска) - добавить параметр сборки, который будет запрашивать у пользователя путь к магистрали / ветви.
Поэтому вместо установки http: // my-svn-repo / project / trunk
(или http: // my-svn-repo / project / branch / BRANCH_V1
) в задании конфигурации, я установлю http: // my-svn-repo / project / $ FROM_BRANCH
и попрошу пользователя ввести параметр FROM_BRANCH
.
Проблема с этим решением заключается в том, что пользователю придется вводить либо trunk
, либо branch / BRANCH_Vx
, что может привести к ошибкам.
В идеале я хотел бы иметь параметр сборки, который позволял бы мне выбирать ветку (включая ствол), поскольку параметр Список тегов Subversion существует для выбора тегов ...
Итак, мой вопрос: есть ли лучший способ настроить одно задание Jenkins, которое может работать во всех ветвях?
Спасибо.
Редактировать : Я нашел плагин Validating String Jenkins, который может быть интересен, чтобы гарантировать, что значение, определенное пользователем, учитывает какое-то регулярное выражение. Это полезно в моем случае ...