Я пытаюсь настроить набор конфигураций сборки в TeamCity 6 и пытаюсь смоделировать конкретное требование самым чистым способом, доступным для TeamCity.
У меня есть набор приемочных тестов (около4-8 наборов тестов, сгруппированных по функциональной области системы, к которой они относятся), которые я хочу выполнять параллельно (я буду моделировать их как конфигурации сборки, чтобы их можно было распределять по набору агентов).
Из моего первоначального исследования кажется, что наличие конфигурации мета-сборки AcceptanceTests
, которая извлекает набор отдельных конфигураций приемочных тестов через Зависимости моментального снимка , должно сработать.Тогда все, что мне нужно сделать, это сказать, что моя Commit
конфигурация сборки должна вызвать AcceptanceTests
, и они все будут втянуты. Итак, допустим, у меня также есть AcceptanceSuiteA
, AcceptanceSuiteB
и AcceptanceSuiteC
Пока все хорошо (я знаю, что я мог бы также повернуть его в другую сторону и заставить конфигурацию Commit
вызвать AcceptanceSuiteA
, AcceptanceSuiteB
и AcceptanceSuiteC
- проблема в том, что мне нужно вручную агрегироватьрезультаты для определения общего успеха приемочных испытаний в целом).
Сложность заключается в том, что хотя AcceptanceSuiteC
просто нужно несколько Commit
артефактов, а затем они могут жить самостоятельно, AcceptanceSuiteA
и AcceptanceSuiteB
нужно:
DeploySite
(допустим, это займет 2 минуты, и я не могу позволить себе раскрутить полностью изолированный только для этого прогона) - Выполнить тесты противразвернутый сайт
Проблема в том, что мне нужно убедиться, что:
- веб-сайт настраивается только один раз
- веб-сайт не получаетзасорился, пока работают два набора
Если я настрою DeploySite
как конфигурация сборки и AcceptanceSuiteA
и AcceptanceSuiteB
извлекают его как зависимость моментального снимка, AFAICT:
- последующий или параллельный запуск
AcceptanceSuiteB
может вызвать другой DeploySite
, которыйможет затормозить развертывание, которое AcceptanceSuiteA
и / или AcceptanceSuiteB
находятся в процессе использования.
Хотя я могу сказать Ограничить число одновременно запущенных сборок только для принудительного примененияпо одному за раз, мне нужно, чтобы по одному и не было, пока зависимые части все еще работают.
Есть ли способ в TeamCity моделировать такую иерархию?
РЕДАКТИРОВАТЬ: Идеи: -
Дерьмовое решение заключается в том, что DeploySite
может установить маркер «в использовании флага», а затем конфигурации AcceptanceTests
сбросить этот флаг [после AcceptanceSuiteA
иAcceptanceSuiteB
завершено].Тогда возникает проблема с следующим DeploySite
ожиданием, пока указанные ворота не будут снова открыты (выполнение блокирующего ожидания в сборке кажется неправильным - я хочу, чтобы оно было помечено как «еще не запущено», а неПохоже, что это занимает много времени, чтобы сделать что-то).Тем не менее, подобные вещи помечают здесь флаг и проверяют его бит, это своего рода изменчивое состояние / неприятный запах, от которого я пытаюсь избавиться.
РЕДАКТИРОВАТЬ 2: если бы я мог программно изменить конфигурацию агентаЯ мог бы установить Требования агента , требующие InUse = false , а затем установить флаг при запуске развертывания и очистить его после выполнения тестов