2016-08-17 8 views
2

Мои вопросы связаны с Trigger subsequent build once after multiple parallel builds in TeamCity, но я столкнулся с проблемой, поэтому разместил ее здесь.Как построить проект в teamcity после того, как несколько других сборок закончены, а не инициировать цепочку зависимостей?

Ниже приведены мои настройки. Я пытаюсь создать цепочку, так что, когда я запускаю A, выполняется целая цепочка.

A (Корневой проект) - B (Снимок, зависящий от триггера A + Finish Build на A) - (Снимок зависит от B) Проект агрегации.

A (Корневой проект) - c (Снимок зависит от A + Finish Build trigger on A) - (Снимок зависит от C) Проект агрегации.

Зависимость от моментального снимка на самом деле ничего не делает (нет моментального снимка, я использую фиктивную конфигурацию сборки в A), мне пришлось создать это, поскольку я хотел передать динамическое значение от A вниз по цепочке, используя% dep, который Я не смог достичь только с помощью триггера Finish Build.

Теперь я также должен иметь возможность запускать B самостоятельно (в этом случае мне не нужна агрегация, она нужна только при запуске корневого проекта A), так что C не запускается и наоборот, но с текущим когда я запускаю B, A запускается (из-за зависимости моментального снимка, затем активируется агрегация, затем C попадает в очередь, поскольку агрегация также является снимком, зависящим от C). Я новичок в Teamcity, поэтому я мог делать все неправильно. Любая помощь приветствуется.

+0

Есть ли у вас какие-либо автоматизированных триггера, кроме триггера отделки сборки (которые в конечном счете, вопрос здесь), и если да, где Oни. Можете ли вы дать более подробную информацию о том, что делает каждая конфигурация сборки? –

+0

Спасибо, что ответили! Нет, у меня нет автоматических триггеров. Мы запускаем проект два раза в неделю. Это тестовая установка. У нас есть отдельная разработка. Мне нужно только запустить настройку, когда команда dev попросит меня запустить тесты E2E. Именно по этой причине мне пришлось настроить Finish build для форвардной цепочки и зависимости моментальных снимков для передачи динамических переменных, чтобы я мог начать с корневого уровня и накапливать все результаты тестов из разных модулей в проекте агрегации. – ygsh

ответ

2

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

  1. Удалить финишная сборка вызывает
  2. Убедитесь в том, что есть снимок зависимости от B => A и от C => A
  3. Добавьте новую сборку (D), которая имеет зависимость моментального снимка от B и C. Это будет сборка для запуска, когда вы хотите, чтобы A, B и C выполнялись.

Запуск C приведет только к запуску A и C и запуск B приведет только к A и B для запуска.

Если вам нужна помощь в настройке этого, то дай мне знать

Надеются, что это помогает

+0

Спасибо. Я попробую это. Я пропустил критическое требование в моем оригинальном посте, которое я перечислил ниже. Мне нужно уметь: 1. Запускается триггер A, запускающий B и C. Динамическое значение должно проходить от A до B и B до C. (или любым другим способом, я просто должен обеспечить, чтобы все три проекта получили пройденные значения) 2. Иногда триггер B напрямую, динамическое значение должно переходите от B к C. Я сожалею, что ранее упоминал, что B не нужно запускать C. 3. И иногда триггер C напрямую. Что не должно вызывать ничего другого. – ygsh

+0

Моя основная проблема связана с динамическими значениями. Насколько я читал, динамические значения не могут перемещаться по цепочке. Например, если я настроил D, у которого была зависимость моментального снимка от B и C. Все три сборки будут вызваны с помощью dependecies, но мои динамические значения не будут передаваться в B и C, а затем A. Пожалуйста, подтвердите, правильно ли это понимание. – ygsh

+0

Если вы настроили D, динамические значения все еще начинаются с A, так как это будет первая конфигурация сборки, которая запускается на основе зависимостей моментальных снимков, поэтому нет проблем с перемещающимися вверх значениями, поскольку конфигурация сборки не выполняется в этом порядке , Что касается B-запуска C, это звучит довольно запутанно и, возможно, общение с чатом - лучший способ разрешить это, а затем через комментарии. –