2016-09-01 2 views
0

Мы используем IVY в нашем проекте, и я недавно установил сервер Jenkins, чтобы каждый раз, когда выполнялась проверка багажника, происходит следующее.Наилучшая практика публикации публикаций и выпуска артефактов моментального снимка

  1. Отчет Jenkins SCM обнаруживает изменения и уведомляет плагин IVY.
  2. Плагин IVY запускает сборник ANT для измененного модуля и запускает сборку модулей ниже по потоку.
  3. Встроенные модули затем опубликованы в центральной 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 никогда не должен использоваться в производственном развертывании?

Я думал, следует ли выполнять еженедельную сборку, которая работает в выходные и выполняет следующее.

  1. Слезы на рабочем месте Дженкинса.
  2. Проверяет багажник от SVN.
  3. Выполняет полную сборку и выполняет все модульные тесты.
  4. Если 3 успеха для ВСЕХ модулей, то опубликуйте артефакты с версией, например, -WKYY.1-IVY repo.

Теперь, если шаги 1-4 верны, выполните ли затем TAG SVN и создайте ветви для ВСЕХ модулей, чтобы в файлах IVY.xml можно было проверить, в каких состояниях указаны номера версий зависимостей?

ответ

0

Я могу поделиться тем, как у нас есть настройки, хотя наша ситуация иная.

У нас есть отдельная ветка для выпуска сборок и отдельное задание, которое опросает эту ветку и создает из нее сборки релизов. Процесс выпуска состоит из слияния ведущей ветки с ветвью выпуска. Конечно, это может быть автоматизировано. В вашем случае, возможно, вы могли бы это сделать, если шаг 3 будет успешным.

Итак, для каждого проекта у нас есть один набор заданий (отслеживание «мастер»), которые обрабатывают сборки моментальных снимков, и один набор заданий (отслеживание «выпуск»), которые обрабатывают сборки релизов. Работы похожи по большей части, но разные.

+0

В какой момент вы решили создать ветвь выпуска? На данный момент проект, который я нахожу во всех разработчиках, регистрируется в багажнике и освобождается от багажника. Разблокированные ветви никогда не создаются :-( – Juckky

+0

Это зависит от того, что вы хотите. Вы можете объединиться с веткой релиза всякий раз, когда будет выполнена сборка и все тесты. Или вы можете делать это периодически, исходя из вашего расписания выпуска. более или менее ручной процесс. У нас есть один большой проект со многими репозиториями. Когда мы хотим иметь выпуск, мы запрещаем все коммиты, кроме тех, которые необходимы для исправления сбоев. Когда все сборки в порядке, мы объединяем master для выпуска для всех репо. – roelvanmeer

+0

Кроме того, мы не создаем ветви релиза (как в: отдельная ветвь для каждой версии). У нас есть * одна ветвь с именем «release», и мы объединяем магистраль в эту ветвь всякий раз, когда код стабилен или когда нам нужен релиз Таким образом, рабочий процесс не сильно отличается от того, когда вы освобождаетесь от сундука. – roelvanmeer

Смежные вопросы