2010-10-22 3 views
0

Может ли инструмент Hudson CI решить зависимые от проекта зависимости от других, чем тривиальные? Например, как настроить сценарий, в котором есть два независимых модуля (A, B) и модуль C, зависящий от A и B?Hudson CI & Project dependecies

Там нет никакого способа, на мой взгляд:

  • «Строить другие проецировать» не гарантирует, что A, B построены до того C
  • «Build после сборки других проектов» гарантировать только «С срабатывает после A или B "(A и B необходимо)
  • Присоединиться к плагину можно решить, если у вас есть ~ 3 модуля. Если есть модули A1, ....., A100 и C1, ....., C100, то он должен написать 100 дополнительных триггеров Join и выпустить 100 дополнительных перестроек B (другими словами, потребности обратной зависимости B перестройка Б). Таким образом, в случае, если триггеры Join не могут быть тривиальными, взломали XML, а бессмысленные перестановки без изменений B не могут быть пропущены (возможно ли это?), Это непрактично.

Так может быть какой-то способ или какое-то стандартное обходное решение для достижения этого?

ответ

0

я мог бы быть что-то отсутствует, но ваш второй вариант должен работать:

сборки после сборки других проектов»гарантирует только„C срабатывает после того, как А или В“(A и B требуется)

Это означает, что C будет строиться каждый раз, когда есть изменения в A или B. Если A и B действительно независимы друг от друга, как вы говорите, которые удовлетворяют всем зависимостям.

+0

Да, вы правы. Если кто-то SUPPOSES, что A и B уже построены, чем каждое изменение для A запускает сборку C, каждое изменение B запускает сборку C, а в случае изменения A и B C восстанавливается в два раза. –

+0

Да, ты прав. Если кто-то СЧИТАЕТ, что A и B уже построены, чем каждое изменение для A запускает сборку C, каждое изменение B запускает сборку C, а в случае изменения A и B C восстанавливается (вероятно) два раза. Однако моя парадигма была совсем другой, я не предполагал, что эти «инкрементные» сборки. Скорее я предполагаю build-server, который время от времени получает запрос на построение (скажем, один раз в 1-2 недели) и делает всю систему изначально. Я думаю, что мне нужно переосмыслить эти два случая .... –

0

Возможно, вы можете попробовать использовать плагин Ivy , который использует Apache Ivy для управления зависимостями.

+0

Да, я знаю об этом, но, на мой взгляд, это добавляет еще одну проблему (Ivy), возможно, два (плагин Ivy +). –

0

Я предполагаю, что это не важно, если ваша сборка не происходит сразу. Таким образом, вы можете изменить планирование для проверки своего SCM. Поэтому давайте скажем, что A будет запущен, чтобы ежедневно проверять SCM в полночь. Затем настройте B для проверки ежедневно в 2 часа ночи (в зависимости от времени сборки для A) и C через 2 часа. Поскольку у вас будут артефакты для A и B, C будет прекрасно работать. Для вновь созданных заданий у вас также будут артефакты, так как вам нужно проверить свою конфигурацию, вы просто запускаете первую сборку вручную.

Если это не вариант, вы всегда можете собрать все 3 из них. Это означает, что вы создаете задание D, которое содержит инструкции по сборке для A, B и C. Это задание будет вызвано изменениями A, B или C.