Как бы вы развернули этот стек .net? - PullRequest
3 голосов
/ 06 марта 2012

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

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

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

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

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

Стоит ли смотреть на MSBuild / NAnt?PS, Грабли?Город команды?

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

Ответы [ 2 ]

4 голосов
/ 09 апреля 2012

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

Jenkins

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

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

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 для сборки RavenDB Rhino-ESB ).

Для некоторыххорошие советы по psake, смотрите этот пост .


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

1 голос
/ 07 марта 2012

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

...