TFS 2010 Build: особенности использования пула агентов для распараллеливания сборки
27/09/2010 Оставьте комментарий
Недавно я обратил внимание на один интересный эффект изменения параметра “Maximum Wait Agent Reservation Time” в описании build workflow. По умолчанию, этот параметр имеет значение 4 часа. Скорее всего, коллеги из Редмонда, рассчитывают на то, что среднестатистическая сборка происходит минут за 20. Ну, максимум за час. Конечно, для серьёзных больших проектов, особенно, если в них есть ещё и C++ код, это не так.
Сборка одного из моих проектов занимает от 1-го до 3-х часов. Несмотря на то, что сборкой занимаются несколько агентов, для gated check-in-ов иметь тройку – другою сборок в очереди, является вполне нормальным делом. В какой то момент я стал замечать, что билды иногда “отваливаются” с наступлением таймаута ожидания свободного агента для сборки.
Ну чтоже, подумал я, куда копать – известно. Пошёл и поставил значение вышеуказанного параметра в “00:00:00”. Вполне валидное значение, ведь комментарий к параметру гласит — “The default value is zero which means there is no timeout.”
Ну, как говорится, улучшил стабильность сборки, и забыл. Каково же было моё удивление, когда через несколько дней я заметил странный эффект – несмотря на доступность нескольких агентов, сборка идёт только на одном из них. Билдеры могут меняться, но в один момент времени идёт строго одна сборка. Чудеса, да и только!
Проверил настройки котроллера сборок, и убедился, что ему разрешено одновременно делать столько сборок, сколько имеется в наличии агентов. Стал вспоминать, что я улучшал в последнее время. Буквально наудачу вернул таймаут ожидания доступности агента… и, о чудо, для сборки стали использоваться все доступные агенты.
Да, недаром разработчики поставили пресловутые 4 часа по умолчанию вместо объявленного нуля!
Так что, теперь там у нас прописаны 23 часа…