#svn #maven #hudson #release #jenkins
#svn #maven #хадсон #выпуск #дженкинс
Вопрос:
Я хотел бы сделать «выпуск», который имеет несколько иное значение, чем то, которое предполагает плагин Maven release.
У меня есть веб-проект (который я хотел бы «выпустить»), который зависит от различных других проектов, которые также создаются тем же hudson (но не как модули).
«Выпуск» должен выполнить следующее:
- создайте все зависимые ^ зависимые проекты с помощью hudson
- создание веб-проекта (добавление увеличивающегося номера версии в МАНИФЕСТ)
- развертывание веб-проекта в tomcat (это уже в обычной сборке)
- создайте новый тег, который включает номер версии в расположении svn x
- скопируйте все текущие исходные коды svn / head проектов, которые ранее создавались, в новый тег
- измените все версии pom всех задействованных проектов на $ {VersionNumber}.0.1-СНИМОК в SVN / head
Я полагаю, что это то, что все должны делать, просто очень сложно найти реальное решение через Google.
Комментарии:
1. Ваше последнее предположение является интересным. Почему вы так думаете?
Ответ №1:
Если у вас есть конкретные потребности, то я думаю, что самый простой способ их достижения — это создание сценариев. В качестве этапов сборки в Hudson можно использовать несколько языков сценариев.
Ответ №2:
Звучит очень похоже на наши требования. Мы еще не создали это полностью в Jenkins.
Итак, у нас есть следующая процедура:
-
объявите о замораживании кода, чтобы все команды могли иметь «правильный» код в магистрали и синхронизировать код друг с другом.
-
Мы запускаем (домашний) инструмент Java, который проверяет код, создает ветки для выпуска и теги выпуска. начиная со следующей итерации, он также обновит магистраль новой версией моментального снимка. Инструмент имеет собственные файлы конфигурации, чтобы он знал, какие номера версий есть / будут и какие проекты (и где они расположены) необходимо обновить.
-
Мы запускаем наше задание «сборка выпуска», которое в значительной степени отключено от всех наших внутренних корпоративных репозиториев (оно знает только о сторонних и внешних репозиториях). Задание очищает локальное репозиторий maven (у него есть собственное репозиторий, который не используется другим заданием). Я загружаю все вложенные папки, относящиеся к нашим проектам (нам нужно настроить это в задании), используя subversion-tag-parameter для каждого и дополнительный pom мегапроекта, который объявляет все загруженные проекты как модули (необходимо перейти в корневую папку). Эта работа также выполняет всю необходимую упаковку (архивирование статического содержимого, объединение статических файлов из разных проектов в один архив, …).
-
развертывание
-
функциональное тестирование
Пока у 2 есть своя собственная работа, а 3 полностью автоматизирован, нам просто нужно запустить его вручную. Шаг 4 находится в разработке для CI, а шаг 5 запланирован для CI. Шаг 4 — это горячий кандидат на автоматизацию (даже если он выполняется только по частям) процесса выпуска.
Я надеюсь, что это немного поможет и даст вам несколько идей.