Переходящая сборка TFS, похоже, пропускает сборку в выходные

#tfs

#tfs

Вопрос:

В TFS 2010 мы настроили сценарий сборки на автоматический запуск и развертывание в нашей тестовой среде не чаще, чем каждые 4 часа. Таким образом, триггер определения сборки — «Переходящие сборки — накапливайте проверки до завершения предыдущей сборки» с установленным флажком «Сборка не чаще, чем каждые [240] минут». Я интерпретирую это так: если сборка происходит в 16:25, и в течение следующих 30 минут будет 3 регистрации (последняя происходит в 16:52), то следующая сборка произойдет в 20:25.

Проблема, которую мы видим, заключается в том, что если эта последовательность событий происходит в пятницу, то следующая запущенная сборка не произойдет до утра понедельника. У нас есть два агента сборки на их собственной отдельной виртуальной машине из TFS, но все машины запущены 24/7.

Никто в команде не знает ничего, что могло бы вызвать такое поведение, поэтому мы не понимаем, почему мы это видим. Мы просто неправильно понимаем значение переходящей сборки или есть настройки конфигурации, которые мы забыли проверить?

РЕДАКТИРОВАТЬ: Как бы то ни было, весь процесс сборки и развертывания занимает всего 90-120 секунд. Таким образом, не было никаких проверок, которые произошли, пока он все еще строился.

Комментарии:

1. Это звучит странно. Просто чтобы убедиться, что тот же сценарий, если он произойдет в будний день, отличный от пятницы, сработал бы нормально? Кстати, машина сборки работает по вечерам в пятницу и в выходные дни 🙂

2. @DuatLe согласился. И вы правы в том, что ожидаемое поведение работает с понедельника по четверг, но вечера пятницы, похоже, сбивают с толку. Сборка, которая должна произойти в пятницу вечером, не выполняется до вечера воскресенья или утра понедельника (без дополнительных проверок для ее запуска). Все необходимые машины работают 24/7, и, насколько мне известно, нет способа заставить агенты сборки запускаться только в определенное время, поэтому такое поведение довольно странное.

3. Стоит провести эксперимент: установите любой случайный день в качестве выходного в вашей итерации. Происходит ли сейчас тот же эффект?

Ответ №1:

Накопление возвратов означает, что при возврате набора изменений, если в течение 240 минут не будет сборки этого определения сборки, TFS автоматически поставит сборку в очередь. Но если не возвращать набор изменений, сборки не будут поставлены в очередь.

Сборки должны запускаться так, как вы написали. 3-я сборка должна быть запущена после первой регистрации после сборки в 20:25, но не ранее 0:25 в субботу. 🙂

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

Комментарии:

1. Я не думаю, что «Следующая сборка должна запускаться после первой регистрации после сборки 20:25». правильно. В этом сценарии, если сборка, которая произошла в 16:25, завершилась до 20:25, то следующая переходящая сборка начнется в 20:25. Если первая сборка завершилась после 20:25, когда бы она ни завершилась, следующая сборка начнется немедленно.

2. Вы правы. Правильно: «3-я сборка должна быть запущена после первой регистрации после сборки 20:25 не ранее 0:25 в субботу» 🙂

3. На самом деле поведение, которое мы наблюдаем, заключается в том, что любые проверки после сборки в 16:25 приведут к тому, что сборка произойдет в 20:25. Не первая регистрация после 20:25.

4. Это поведение правильное. Проверки накапливаются, и следующая сборка запускается через 240 минут