Как бы вы развернули этот стек .net?

У меня есть приложение .net, которое имеет интерфейс MVC3 и 2 службы Windows.

Все зависит от двух установок RavenDB, которые могут запускаться как службы Windows или IIS - меня здесь не беспокоит.

Сервисы построены с использованием TopShelf, а тестирование выполняется с помощью NUnint. Я использую Github в качестве репо.

В идеале при каждой успешной сборке Release я бы хотел построить, протестировать, стереть каталоги и каталоги данных RavenDb, а затем развернуть (веб и службы), а затем запустить процессы для завершения работы над консольным приложением, которое я создаю, которое может работать с набором данных по умолчанию.

Как бы вы управляли развертыванием здесь? У меня еще нет CI-сервера. У меня есть совершенно новый сервер, с которым я могу делать все, что хочу. Я давно не занимался CI / CD и подозреваю, что оружие изменилось.

Стоит ли мне искать MSBuild / NAnt? PSake, Рейк? Team City?

Как бы вы управляли процессами после сборки?


person Community    schedule 06.03.2012    source источник


Ответы (2)


Я использую Jenkins с psake, и он работает очень хорошо. Честно говоря, psake выполняет большую часть работы, а Дженкинс просто извлекает исходный код и затем вызывает мой скрипт psake, но, как говорит Ник Нисланик, вы можете легко заставить Дженкинса напрямую вызывать MSBuild / NUnit / etc, если хотите.

Дженкинс

При просмотре потоков Jenkins vs. CruiseControl (.NET) в StackOverflow, общий консенсус, похоже, был в пользу Jenkins. На самом деле не пробуя CruiseControl, я не могу за это поручиться, но скажу, что Дженкинс очень хорош. Я обнаружил, что Jenkins легко настроить. Я быстро заглянул в CruiseControl.NET и обнаружил, что с Дженкинсом проще начать работу. Я вообще не смотрел TeamCity, поэтому не могу об этом говорить.

У Jenkins есть хорошая система плагинов и множество плагинов, в том числе один для Powershell, который упрощает вызов сценария psake.

Псаке

Пока что я считаю, что psake потрясающий. Он основан на синтаксисе rake, но немного более родной для Windows, чем rake. Поскольку он находится поверх PowerShell, вы можете использовать множество удобных функций администратора Windows, которые поставляются с ним. Например, см. этот пост - отличный пример настройки и удаления пулов приложений и сайтов IIS прямо из ваших задач psake. Я думаю, что это здорово, и я не уверен, как бы вы это сделали в MSBuild, Nant или rake. Основные операции с файловой системой - это тоже хлеб с маслом - кажется, лучше, чем иметь кучу угловых скобок, просто чтобы куда-то скопировать какие-то файлы.

Что касается MSBuild и Nant, я думаю, что они обе довольно мощные, но редактирование XML-файлов для такого рода вещей кажется болезненным. Powershell - это подходящий язык сценариев с глубокой интеграцией с Windows. psake - это DSL для построения и других задач. Хорошая комбинация.

Тем не менее, для фактического построения я просто передаю его в msbuild из psake и вызываю его в файлах решения / проекта, которые я хочу построить. psake имеет встроенную команду для вызова msbuild и указания, какую версию использовать, и т. д. (по правде говоря, наибольшая боль до сих пор связана с запуском msbuild файлов решений, которые отлично собираются в Visual Studio.)

Поскольку вы работаете с RavenDB, вам может быть интересно узнать, что они используют psake для создание RavenDBRhino-ESB).

Общие полезные советы по psake можно найти в этом сообщении.


Короче говоря, лично я бы порекомендовал Jenkins и psake. Эта комбинация будет хорошо интегрирована с git, msbuild, NUnit, IIS и, возможно, даже со службами Windows.

person ngm    schedule 08.04.2012
comment
Извините за то, что так долго к этому не возвращался! Отличный ответ :) - person ; 06.08.2014

Я бы использовал Jenkins в качестве механизма выполнения заданий. Затем я мог бы создать набор сценариев MSBuild для выполнения базовой сборки и использовать модель плагина Jenkins для добавления задач до и после сборки по мере необходимости (например, выполнение NUnit и анализ результатов, выполнение сценария Powershell для некоторого развертывания) и т. Д. Jenkins имеет отличная интеграция с Github с использованием хуков Post / Pre-commit, которые позволяют довольно просто настраивать сборки CI.

person Nick Nieslanik    schedule 07.03.2012
comment
интересный. в чем разница между дженкинсом и хадсоном? - person ; 07.03.2012
comment
Кроме того, в чем будет выгода по сравнению с командным городом? - person ; 07.03.2012
comment
Дженкинс против Хадсона - bobbickel.blogspot.com/ 2011/03 / Что касается преимущества TeamCity, я не могу вам сказать, так как я не использовал TeamCity. Мне нравится Jenkins, потому что в него легко подключать и воспроизводить различные модули, и есть подключаемый модуль почти для каждого механизма управления версиями и сборки. - person Nick Nieslanik; 07.03.2012