Хадсон выполняет вышестоящий проект, когда запускается нижестоящий проект - PullRequest
1 голос
/ 04 октября 2010

это кажется простой вещью, но почему-то я не могу понять это.У меня есть проект A и проект B. Если проект A выполняется успешно, проект B создается.Это работает без проблем.Если я хочу выполнить только проект B, я хочу, чтобы перед его сборкой, проект A будет построен снова.Это возможно ?Таким образом, в основном Проект B не должен запускаться в одиночку, он должен всегда собираться до Проекта A.Заранее спасибо.

Куку

Ответы [ 4 ]

1 голос
/ 04 октября 2010

Единственная причина, по которой я могу представить, что вам нужно такое поведение, - это если у вас есть какие-то циклические зависимости. Вы действительно должны попытаться избавиться от них, поскольку они значительно замедлят развитие в будущем.

Все, что замедляет цикл обратной связи, стоит огромных денег из-за потери производительности.

0 голосов
/ 23 мая 2011

Другая возможность: вы можете добавить в конфигурацию B некоторый сценарий оболочки, который запускает A вручную, если только эта сборка не была вызвана A.

Сначала проверьте, что вызвало сборку.Я не уверен, есть ли «правильный» способ получить эту информацию, но вот один из способов.Прочитайте файл build.xml (в файле jobname / builds / jobnumber /) и найдите следующее:

Инициировано SCM:

<hudson.model.CauseAction>
    <causes>
        <hudson.triggers.SCMTrigger_-SCMTriggerCause/>
    </causes>
</hudson.model.CauseAction>

Инициировано другим заданием:

<hudson.model.CauseAction>
    <causes>
        <hudson.model.Cause_-UpstreamCause>
            <upstreamProject>agp_lib_V5</upstreamProject>
            It goes further than this but that's all you need.

Как только вы узнаете, что вызвало сборку B, вы можете либо запустить сборку A и выйти (для сборок, запускаемых SCM), либо продолжить сборку в обычном режиме (для сборок, запускаемых восходящим потоком).

Это не красиво, но это может сработать.

0 голосов
/ 23 мая 2011

Возможно, вы могли бы добавить дополнительный файл в хранилище A и каким-то образом убедиться, что всякий раз, когда код фиксируется в B, этот файл каким-либо образом изменяется?Кроме того, принудительно установите период тишины для B. Таким образом, A всегда будет строить раньше B.

0 голосов
/ 04 октября 2010

Как насчет простого решения. Запустить проект A, если в хранилище A или B произошли изменения. Проект B никогда не будет инициирован изменением SCM, но всегда после сборки A. Это может стоить вам немного больше места на диске и немного больше времени для проверки. Но это просто и понятно. Нет таймера, он будет собираться только при запуске через SCM.

Вы можете выбрать общее рабочее пространство, но я бы отказался от этой опции, поскольку вам нужно синхронизировать два задания, чтобы они никогда не работали параллельно. Вместо этого я бы использовал плагин clone workspace, чтобы скопировать рабочее пространство из A в B (вы получите только последнее (по умолчанию последнее успешное), но вы получите его, даже если в данный момент есть новая сборка.

В зависимости от того, кто отвечает за два проекта (отдельные команды или одна команда для обоих), вы также можете объединить две сборки в одну работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...