TFS 2008/2010 против Jenkins для непрерывной интеграции

#tfs #continuous-integration #jenkins

#tfs #непрерывная интеграция #Дженкинс

Вопрос:

Есть ли у кого-нибудь конкретный опыт использования TFS 2008/2010 И Jenkins для непрерывной интеграции (CI)? Мы пытаемся решить, какой сервер CI использовать. Наша команда работает исключительно в Microsoft .NET / Visual Studio 2010 / C #. У нас есть следующие требования:

  1. Автоматически создавайте наш веб-проект при каждой регистрации.
  2. Запускайте модульные тесты с каждой сборкой.
  3. Автоматическое развертывание «зеленых» сборок в средах разработки и / или тестирования.
  4. Предоставляйте красивые отчеты.
  5. Отправляйте уведомления о сборке / развертывании по электронной почте.

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

Я ищу конкретные функции, которые есть у Дженкинса, которых нет в TFS 2008/2010, или наоборот. Также, что проще в обслуживании, использовании и т. Д.

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

1. Просто так, Jenkins может выполнять все эти действия (плагин TFS SCM, плагин MSBuild, плагины для развертывания в X), хотя часть «красивые отчеты» может потребовать некоторых усилий с вашей стороны. Но для этого есть довольно всеобъемлющий API для получения информации о сборке и еще много чего, что может помочь.

2. Кроме того, Jenkins действительно очень прост в обслуживании и использовании. Вы можете делать все с помощью браузера, все опции имеют понятную контекстную справку, а сообщество очень активно и полезно.

3. Кроме того, у Jenkins есть плагин Chuck Norris, который абсолютно необходим для пристыдления разработчиков, которые нарушают сборку. TFS не предлагает этот плагин исключительной функции.

Ответ №1:

Я бы настоятельно рекомендовал использовать Jenkins — он выполнит все ваши требования «из коробки», кроме, возможно, # 3, но если вы можете создать сценарий для своих развертываний, он также может это сделать.

Вот несколько ссылок, которые помогут вам запустить и запустить ваши сборки:

Блог о выполнении.СЕТЕВЫЕ сборки в Jenkins

Установщики Windows от Jenkins

Установка ведущего и ведомого Jenkins в качестве служб Windows

Отказ от ответственности: у меня нет опыта работы с TFS, но я думаю, что открытые решения почти всегда более гибкие и расширяемые (и дешевле!), Чем проприетарные продукты.

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

1. Я полностью согласен и предпочитаю решения с открытым исходным кодом, но мне нужны факты, чтобы убедить нашего корпоративного архитектора в том, что Jenkins — это правильный путь.

2. Я широко использовал TFS в прошлом, и в настоящее время я внедряю Jenkins для клиента, и, честно говоря, это 6 в одном и полдюжины в другом. TFS имеет потрясающую интеграцию с IDE, множество расширений с открытым исходным кодом в CodePlex и использует Windows Workflow Foundation для удобства расширения, в то время как у Jenkins есть хороший набор плагинов с открытым исходным кодом. большое сообщество пользователей, хотя, если вы являетесь магазином .NET и хотите написать плагин для него, вам нужносделайте это на Java.

Ответ №2:

Поздно для этой игры, но я использовал как TFS 2010, так и Jenkins для CI. В TFS 2010 есть минимальный набор инструментов CI. Однако, когда вы хотите создать конвейер CI, это совершенно другая история, в то время как Дженкинс может легко создать конвейер.

Если вы смотрите только на CI для одной сборки, любой из них должен работать. Однако, когда дело доходит до всего конвейера, Дженкинс — это путь. С помощью TFS это можно сделать, но Дженкинс — лучший выбор.

Вот краткие пункты:

TFS:

  • С определением сборки вы можете компилировать, выполнять тесты, возвращать набор изменений / рабочие элементы, отправлять электронное письмо при сбое сборки

  • естественная интеграция с Visual studio

  • чрезвычайно сложно создать конвейер CI. Требуется пользовательский обработчик и обширная работа с рабочим процессом. Не так интуитивно понятно, как создание определения сборки.

  • Из-за 3-го пункта нелегко поддерживать / настраивать / масштабировать конвейер CI

Дженкинс:

  • Необходимо создать конфигурационный файл msbuild для CI, что не так сложно по сравнению с созданием конвейера CI с использованием TFS. Однако TFS предоставляет лучший / более простой инструмент для создания определения сборки. тем не менее, неплохо создать конфигурационный файл для msbuild для проекта.

  • Создать конвейер CI очень просто. Просто соедините их в цепочку, используя триггер задания jenkins вверх / вниз по течению и передавая артефакт из предыдущего задания.

  • Поскольку Jenkins очень гибкий, легко создать плагин jenkins для удовлетворения ваших собственных потребностей и предоставить его сообществу с открытым исходным кодом 🙂

В общем, если вам нужна полная автоматизированная система сборки, тестирования и развертывания, выбирайте Jenkins. Если вам просто нужно только строить и тестировать, TFS может дать вам преимущество перед Jenkins.

Ответ №3:

Если вы используете Team 2010-2012, нет никаких причин привлекать Дженкинса. Team обладает всеми перечисленными вами функциями, а процесс сборки невероятно гибкий.

Обратите внимание, что если вы застряли на Team 2008 или более ранней версии, вам следует серьезно присмотреться к Jenkins — 2008 и более ранние версии довольно примитивны и негибки по сравнению с 2010 или более поздней.

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

1. Какие доказательства вы можете предоставить в поддержку этого утверждения? Используя как TFS, так и Jenkins для .NET CI, я вижу аргументы обеих сторон, но вы делаете довольно необычное заявление, даже не упоминая, насколько сложным может быть заставить TFS выполнять CI именно так, как вы этого хотите, OOTB, без головной боли. Настройка ветвления основной линии, ветвления функций и т. Д. С TFS Может быть довольно утомительной, И Дженкинс, похоже, превзошел TFS в отношении простой конфигурации. MSBuild довольно прост. пища для размышлений.

2. Я недавно боролся с этим, пытаясь получить полную автоматическую сборку и развертывание TFS в Azure, и для работы требуется «НАМНОГО» больше времени, чем следовало бы. Проблема в том, что шаблоны непрерывной интеграции просто автоматически выбирают первый веб-проект в решении для развертывания… но у меня их два, и в алфавитном порядке он всегда выбирает неправильный. Нет вариантов сказать иначе, и поэтому сейчас я пытаюсь настроить шаблон развертывания, чтобы обойти этот серьезный недостаток в готовом дизайне.

3. Рассматривали ли вы возможность создания двух сборок?