После параллельного перехода на сборку различных версий мы периодически видим сбои сборки из-за сбоя CreateLabel - PullRequest
6 голосов
/ 28 марта 2012

Мы используем автоматические сборки непрерывной интеграции TFS 2010, которые запускаются при каждой регистрации.Недавно я изменил шаблон процесса для параллельной сборки Debug и Release на разных агентах сборки, а не последовательно на одном агенте.

С тех пор мы периодически видим сбой сборки из-за следующей ошибки.Это случается достаточно часто, чтобы это было неприемлемо (каждые 5-10 сборки или около того).

"TF203059: метка уже существует. Повторите команду с другим именем метки"

Я не смог выяснить конкретный шаблон, который вызывает это.Кто-нибудь сталкивался с этим раньше?Должны ли быть внесены изменения в действие «Создать метку» в процессе сборки?

Ответы [ 2 ]

1 голос
/ 05 апреля 2012

Есть несколько проблем, которые могут возникнуть из-за распараллеливания. Метки - это одно, а изменение рабочих элементов - второе. Там может быть больше, но это то, что я столкнулся. Если вы переместитесь в одну резьбовую часть, это должно решить ваши проблемы. Однако это часто сопровождается множеством проблем. IIRC, для маркировки требуется, чтобы вы нанесли на карту рабочее пространство и получили самые последние данные, прежде чем вы сможете маркировать, поэтому, если у вас много файлов, это может снизить любые преимущества производительности при распараллеливании. Для рабочих элементов проблема может возникнуть из-за того, что один процесс изменяет рабочий элемент после того, как другая ветвь считывает его, и TFS передает соответствие, в котором он изменен, поэтому он не может обновить.

0 голосов
/ 18 января 2014

В случае параллельных сборок для конфигураций «Отладка» и «Выпуск». Он пытается поставить один и тот же ярлык дважды, что может создать проблемы. в частности, мы должны предоставить этот ярлык только один раз. Таким образом, в этом случае, чтобы избежать такой проблемы, мы можем поставить условие для любой конфигурации, чтобы поставить метку и пропустить метку для второй конфигурации.

используйте это, если условие:

if (configuration = "Release") затем (CreateLabel) еще [Вы должны оставить это поле пустым для отладки, так как мы уже указали этот ярлык один раз для условия «Выпуск»]

Таким образом, я решил свою проблему, связанную с проблемой дублирования метки.

"TF203059: метка уже существует. Повторите команду с другим именем метки"

Надеюсь, он также отлично подойдет для параллельных сборок.

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