TFS 2012: Сопоставление двоичных файлов со сборками и исходным кодом

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

Однако одна из вещей, с которой я борюсь, - это требование к нашему решению для управления версиями, которое гласит, что мне нужно быть в состоянии доказать, что конкретный набор изменений или полка произвел конкретную сборку. То есть, учитывая конкретный двоичный файл, я могу указать на набор изменений выпуска, который сгенерировал этот двоичный файл. Я также могу указать на тестовый набор изменений, который был объединен в ветку выпуска. Идея здесь не просто в разделении обязанностей, а в подтверждении того, что, поскольку наборы изменений выпуска и тестирования идентичны, рецензент кода не ввел в проект код.

Я прочитал одно сообщение в блоге, в котором говорится о " Бинарные акции »- будет ли эта концепция полезна в моей ситуации? Мне сложно понять, как это двоичное продвижение настроено в TFS.


person Reacher Gilt    schedule 25.10.2012    source источник


Ответы (1)


Развертывание

TFS из коробки на самом деле не поддерживает развертывания, ее можно развернуть в одном месте при сборке, которое часто является тестовым сервером (подумайте об управлении лабораторией). В TFS 2012 встроена поддержка развертываний Azure, но они по-прежнему происходят в конце сборки, и артефакты сборки не могут быть автоматически развернуты в новом месте.

Вы можете изменить шаблон сборки, чтобы разрешить выпуск в разных местах, но это все равно будет свежая сборка для каждой среды, а не настоящие бинарные рекламные акции.

Однако TFS имеет понятие качества сборки и фактически запускает события при изменении этого качества. TFS Deployer - это сторонний инструмент, который перехватывает событие изменения качества и может выполнять сценарии PowerShell. Это означает, что с помощью простого изменения значения в раскрывающемся списке вы можете автоматически запустить сценарий, который запускается в любой среде, которую вы хотите. Вы можете настроить список качества сборки (для каждой группы) так, чтобы он представлял собой список сред (dev, uat, staging, production и т. Д.), Для которых сценарий затем определяет, где выпустить конкретную сборку.

VS2012 также имеет несколько приятных улучшений для веб-развертывания, что означает, что конфигурации развертывания хранятся в системе управления версиями вместе с проектом, что теоретически означает, что они будут доступны в папке размещения для использования TFS Deployer.

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

TFS2012 имеет возможность пометить сборку как развернутую как часть функциональности развертывания Azure, вы помечаете сборки tfs deployer как развернут с помощью скрипта, но он не очень полезен.

Octopus Deploy - еще один проект, на который стоит обратить внимание, и его можно использовать вместо TFS Deployer, если ваш шаблон сборки создает пакеты NuGet. Это требует немного большего контроля над производственным оборудованием, поскольку вам необходимо установить агенты в каждой среде для обработки выпусков, но это решает множество других проблем с развертыванием.

Контроль версий

Если у вас есть хороший последовательный способ автоматического выпуска, который люди не обходят, вы можете посмотреть на улучшение шаблона сборки, чтобы внедрить версию сборки или номер набора изменений в качестве версии сборки для всего, что создается как часть этой автоматической сборки. Есть несколько способов сделать это, и множество блог posts и инструменты, чтобы помочь вам в этом.

В качестве альтернативы вы можете просто использовать автоматическое управление версиями сборки ([assembly: AssemblyVersion("1.0.*")]), чтобы указать дату / время, когда произошла сборка, что в итоге выглядит как 1.0.1234.123, где 1234 - это что-то вроде дней с 1 января 2000 года, а 123 - это минуты с полуночи (мой конкретика здесь может быть неправильной).

Если вы развертываете веб-сайты, я настоятельно рекомендую вставить текущую версию сборки где-нибудь в html. Таким образом вы можете проверить, на какой версии работает веб-сайт, без необходимости доступа к каталогу bin. Его также можно добавить как строку запроса к импорту файлов css / js, чтобы гарантировать отсутствие кеширования браузера между версиями.

Мысли

Лично я надеюсь, что Microsoft осознает, что рабочие процессы сборки xaml пытаются сделать слишком много и что они разделяют различные задачи (сборка, тестирование, развертывание ...) на разные части, поддерживающие сценарии. Конечно, этого не произойдет до следующего крупного релиза TFS, который выйдет через несколько лет. Хотя с Team Foundation Service они пытаются выполнять итерацию намного быстрее, поэтому они могут фактически расширить возможности развертывания Azure до чего-то более полезного в ближайшем будущем.

person Betty    schedule 26.10.2012
comment
Это действительно продуманный и исчерпывающий ответ, спасибо! Мне понадобится время, чтобы разобрать все это, но я очень ценю это. - person Reacher Gilt; 26.10.2012
comment
Я прочитал немного больше о том, что TFS предлагает клиентам Azure - мне кажется, что местные пользователи во многих отношениях являются гражданами второго сорта. - person Reacher Gilt; 29.10.2012
comment
Многие лазурные функции поступают в TFS на месте, график выпуска просто не такой быстрый (3 недели против 3 месяцев). Это связано с тем, что OnSite позволяет настраивать гораздо больше, чем облачная версия, поэтому им проще внедрять изменения. - person Betty; 30.10.2012