Мы используем IVY в нашем проекте, и я недавно установил сервер Jenkins, чтобы каждый раз, когда выполнялась проверка багажника, происходит следующее.Наилучшая практика публикации публикаций и выпуска артефактов моментального снимка
- Отчет Jenkins SCM обнаруживает изменения и уведомляет плагин IVY.
- Плагин IVY запускает сборник ANT для измененного модуля и запускает сборку модулей ниже по потоку.
- Встроенные модули затем опубликованы в центральной IVY репо версированной в 1.0-SNAPSHOT
Каждый модуль ivy.xml на стволе объявляет зависимости с использованием оборотов = «latest.integration» и файл ivysettings.xml объявляет Резольвер следующим образом. Это гарантирует, что позднее SNAPSHOTS будут снесены до местного репозитория IVY.
<resolvers>
<chain name="chained" returnFirst="true">
<filesystem name="libraries" changingPattern="1.0-SNAPSHOT" changingMatcher="exact" checkmodified="true">
<ivy pattern="${ivy.repo.dir}/[organisation]/[module]/[revision]/ivy.xml"/>
<artifact pattern="${ivy.repo.dir}/[organisation]/[module]/[revision]/[artifact].[ext]"/>
</filesystem>
</chain>
</resolvers>
Теперь это работает отлично, пока развивается по стволу, но я смущен о том, как принять это вперед, так что мы можем опубликовать релиз артефакты. Если я прав, SNAPSHOTS никогда не должен использоваться в производственном развертывании?
Я думал, следует ли выполнять еженедельную сборку, которая работает в выходные и выполняет следующее.
- Слезы на рабочем месте Дженкинса.
- Проверяет багажник от SVN.
- Выполняет полную сборку и выполняет все модульные тесты.
- Если 3 успеха для ВСЕХ модулей, то опубликуйте артефакты с версией, например, -WKYY.1-IVY repo.
Теперь, если шаги 1-4 верны, выполните ли затем TAG SVN и создайте ветви для ВСЕХ модулей, чтобы в файлах IVY.xml можно было проверить, в каких состояниях указаны номера версий зависимостей?
В какой момент вы решили создать ветвь выпуска? На данный момент проект, который я нахожу во всех разработчиках, регистрируется в багажнике и освобождается от багажника. Разблокированные ветви никогда не создаются :-( – Juckky
Это зависит от того, что вы хотите. Вы можете объединиться с веткой релиза всякий раз, когда будет выполнена сборка и все тесты. Или вы можете делать это периодически, исходя из вашего расписания выпуска. более или менее ручной процесс. У нас есть один большой проект со многими репозиториями. Когда мы хотим иметь выпуск, мы запрещаем все коммиты, кроме тех, которые необходимы для исправления сбоев. Когда все сборки в порядке, мы объединяем master для выпуска для всех репо. – roelvanmeer
Кроме того, мы не создаем ветви релиза (как в: отдельная ветвь для каждой версии). У нас есть * одна ветвь с именем «release», и мы объединяем магистраль в эту ветвь всякий раз, когда код стабилен или когда нам нужен релиз Таким образом, рабочий процесс не сильно отличается от того, когда вы освобождаетесь от сундука. – roelvanmeer