Jenkins Partial Build / Modular Build on Commit Hook

Tools:
Дженкинс вер. 1,470
Мейвен 2
Subversion

Environment

Предположим, что в моей сборке есть несколько проектов A-D. Граф зависимости существует, как показано. То есть: B зависит от классов в A, C зависит от классов в B, D зависит от классов в A. Мы создаем сборки jenkins так, чтобы они вызывали сборки, зависящие от них, как действие после сборки.

А
|--> В --> С
|--> D

Каждую ночь мы запускаем полную сборку в Jenkins (строит A, запускает B (запускает C), запускает D).Это делается достаточно легко, сказав A построить nightly, а остальные каскадировать.

Проблема

Однако при фиксации мы хотим собрать проекты, которые были зафиксированы один раз.

  • Ситуация 1: Мы опрашиваем репозиторий (или используем перехватчики коммитов, это не имеет значения) и обнаруживаем, что была фиксация на B, тогда B будет собираться, а C будет собираться. Успех!

  • Ситуация 2: мы опрашиваем репозиторий и обнаруживаем, что B и C были зафиксированы в одном коммите, затем Jenkins попытается собрать B (запустив сборку C) и построить C (вторая сборка). Неудача. Видишь, что происходит? C был построен дважды, что заняло драгоценное время сборки. Спешите строить!

Кто-нибудь знает способ запуска только самого высокого проекта в каждом зафиксированном конвейере сборки?

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

  • Ситуация 3: Коммит B C и D в одном коммите. Ловушка SVN находит, что C зависит от B. Ловушка вызывает ссылки, специфичные для проекта, чтобы начать сборку для B и D.

Подводные камни: Очень сложная хук фиксации SVN. Необходимо поддерживать конвейер в хуке SVN.

Я чувствую, что это проблема, с которой сталкивались другие. Есть ли подключаемый модуль Jenkins, который помогает в этом?

6
задан Thundertoe 19 June 2012 в 20:49
поделиться