TFS 2008: вопросы об автоматических сборках, метках и общем управлении версиями

сначала немного предыстории ...

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

Мы, вероятно, собираемся поступить так: когда мы готовимся к выпуску, мы берем ответвление от dev и называем его 1.x. Это будет тестовая ветвь: мы тестируем ее, исправляем (затем снова сливаем с dev), тестируем еще раз, а затем, когда все в порядке, мы берем другую ветку из ветки 1.x и называем ее 1.0. Именно эта ветка развертывается в производственной среде. Любые исправления в производственной среде будут внесены в 1.x, протестированы, а затем будет создана новая ветка 1.1.

Моя проблема связана с тестированием ветки 1.x. Перед тестированием ветка будет заблокирована по понятным причинам. Моя проблема в том, что QA требует, чтобы раунд тестирования проводился по «номеру версии», и если тестирование не удастся, следующий раунд тестирования будет с новым «номером версии». Мы, разработчики, хотим привязать «номер версии» к выпуску, и тестирование может повторять эту версию ... так что здесь возникает конфликт.

Моя первая мысль - использовать номер сборки как момент времени, по которому тестируется код. Когда приходит время отправить новую версию для тестирования, ветвь 1.x снова блокируется, запускается сборка, и сгенерированный номер VSTS становится «условием выпуска 1 для v1.0». Сопоставление RC со сборкой мы можем сделать вручную в электронной таблице ...

... затем кто-то упоминает ярлыки и что код должен быть заблокирован, помечен и построен до тестирования. Я никогда раньше не использовал метки и только что прочитал, что сама сборка создает метку в TFS.

Я сейчас не понимаю, как лучше всего идти сюда. Достаточно ли использовать номер сборки для релиз-кандидата? Служит ли здесь ручная маркировка какой-либо цели (единственное преимущество, которое я вижу, это то, что мы можем дать ей собственное имя и описание)? Могу ли я сказать TFS НЕ создавать метку всякий раз, когда она запускает сборку, а просто делать все наши собственные метки в значимые моменты времени (например, не каждая сборка будет кандидатом на выпуск)? Если да, то создание ярлыка после каждой сборки - это НЕ плохая идея, что дает мне маркировка?

Думаю, меня смущает, где наборы изменений, номера / названия сборок и метки сочетаются друг с другом ...

Это широкий вопрос, но это один из тех, о которых я не уверен на 100%, что спрашивать. Любая помощь приветствуется.


person MrLane    schedule 02.03.2010    source источник


Ответы (2)


... затем кто-то упоминает ярлыки и что код должен быть заблокирован, помечен и построен до тестирования. Я никогда раньше не использовал метки и только что прочитал, что сама сборка создает метку в TFS.

Вы правильно прочитали. В TFS (в отличие, скажем, от SourceSafe) каждое действие сервера представляет собой «известный момент времени», на который позже можно ссылаться. Вы можете понять, что я имею в виду, выполнив Get Specific Version... и посмотрев в раскрывающееся меню Version: в TFS 2005 я вижу соответствующие значения Changeset, Date, Label. Теперь, как вы правильно сказали, каждая сборка автоматически создает метку. Это означает, что в любое время можно будет получить код в точности так, как он был после любого заданного набора изменений; в любую дату; и когда был применен какой-либо конкретный ярлык, в том числе когда была произведена сборка.

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

person AakashM    schedule 02.03.2010

Ваша ветка 1.x является консолидированной веткой, который будет содержать множество небольших эволюций.
Блокировка ветки - не ответ.

Установка метки (специально названной «для теста QA» и заблокированной, чтобы нельзя было переместить эту метку, - это обычный способ сигнализировать команде QA, что они могут создать свое собственное рабочее пространство и получить эту точную метку.
Затем они могут начать свои тесты по коду.
Создание метки после каждой сборки не всегда практично, поскольку не каждая сборка предназначена для тестирования QA.

person VonC    schedule 02.03.2010
comment
Переместите этикетку, что именно это означает? У меня сложилось впечатление, что метки в TFS не являются моментом времени, а вы можете вносить изменения в маркированный код после того, как метка была сделана. Мы хотим, чтобы метка в данном случае была моментом времени ... поэтому вы предлагаете заблокировать метку? - person MrLane; 04.03.2010
comment
@mrlane: переместить метку: некоторые VCS позволяют перемещать метку для ссылки на другую фиксацию. В TFS, поскольку метки можно редактировать (stackoverflow.com/questions/545785/), они не должны редактироваться, если предназначены для контроля качества, в противном случае QA не уверен в том, что он тестирует. Отсюда мой комментарий о блокировке метки, хотя вы не можете заблокировать метку в TFS (только файлы) - person VonC; 04.03.2010