metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-12-04 09:40 pm

Деплоймент с помощью MSBuild

Сижу клепаю для проекта сборку, деплоймент на тестовые машины и запуск автоматических тестов.
И получается, что если не использовать специализированные CI серверы типа CruiseControl.NET, то самый прямой способ это делать для дотнет-проектов - это MSBuild. Для него есть куча расширений (и можно массово писать свои), он умеет почти все мыслимые вариации на тему конфигурирования билда, интегрирован с проектами Visual Studio (вернее, это проекты студии являются проектами MSBuild). Единственный недостаток - конфигурация в xml и извращения, если нужен императивный код (императивный код на xml, как известно, всегда является уродством).
Но есть смутное ощущение, что я занимаюсь tool abuse и надо втащить CI и его 100501-й язык конфигурирования, тоже как всегда на базе xml.

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

[identity profile] denisioru.livejournal.com 2012-12-04 06:43 pm (UTC)(link)
FinalBuilder вполне ок.
А для MSbuild есть годнейший MSBuild Extensions pack и неопробованный MSBuild Mercurial
(deleted comment)

[identity profile] bydlorus.livejournal.com 2012-12-04 08:22 pm (UTC)(link)
> ms team foundation
> очень счастливы

Поделил на 0. Впрочем, "что-то билдить умеет" как бы намекает на нетребовательность юзера.
wizzard: (фото)

[personal profile] wizzard 2012-12-04 09:56 pm (UTC)(link)
таск трекер там и правда хороший. а вот версионник...

[identity profile] bydlorus.livejournal.com 2012-12-05 07:08 am (UTC)(link)
Хороший таск трекер? Для тасков время в одном табе, для дефектов - в другом... один человек может создать дефект с пустым временем, а второй не может его сохранить пока не поставит 0... Ну это мелочи. Хуже, что при наличии сколько-нибудь больших проектов он постоянно отваливается (есть соотв. баг на сайте ms).

[identity profile] jakobz.livejournal.com 2012-12-04 08:00 pm (UTC)(link)
Не в CCNet вроде из коробки nunit и msbuild. Деплоймент если тупо копированием - тоже просто. В простом случае даже сильно конфиги не надо крячить - тупо раскоментировать что нужно и поправить путь к SVN-у.

[identity profile] bydlorus.livejournal.com 2012-12-04 08:27 pm (UTC)(link)
После hudson/jenkins ещё кто-то пользуется CI? Или его таки допили до юзабельного состояния?

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

[identity profile] jakobz.livejournal.com 2012-12-04 10:57 pm (UTC)(link)
msbuild может и отстой, но его студия открывает.

[identity profile] bydlorus.livejournal.com 2012-12-05 07:10 am (UTC)(link)
Это типа достоинство? Т.е. формат настолько ужасный, что более-менее работать с ним можно только с помощью студии.. но это достоинство.

Code-only MS так и не осилили.

[identity profile] metaclass.livejournal.com 2012-12-05 07:53 am (UTC)(link)
Формат ужасный, студия ужасна, но если не пользоваться MSBuild - все становится еще хуже, потому что приходится руками повторять все то, что умеет MSBuild.

[identity profile] bydlorus.livejournal.com 2012-12-05 07:56 am (UTC)(link)
Короче среди слепых и одноглазый - король. Я забыл эту житейскую мудрость :-)

[identity profile] nivanych.livejournal.com 2012-12-05 05:01 pm (UTC)(link)
Ну ви прямо как тактичный и вежливый theяced!

[identity profile] jakobz.livejournal.com 2012-12-05 07:58 am (UTC)(link)
Можно использовать другое, но для студии-то все равно нужно будет писать msbuild-файлы.

[identity profile] berezovsky.livejournal.com 2012-12-04 08:45 pm (UTC)(link)
из засад, которые там помню, пробелы в именах папок и последовательность сбора проектов

[identity profile] metaclass.livejournal.com 2012-12-04 09:20 pm (UTC)(link)
Там надо выключать многопоточный билд, если не выстроены зависимости между проектами (хер знает как их выстроить).

[identity profile] berezovsky.livejournal.com 2012-12-04 09:59 pm (UTC)(link)
DependsOnTargets же

[identity profile] evil-invader.livejournal.com 2012-12-04 09:14 pm (UTC)(link)
Ant скрипты умеет на всяких языках. Может NAnt у вас тоже должен уметь?

[identity profile] metaclass.livejournal.com 2012-12-04 09:21 pm (UTC)(link)
Я побаловался с NAnt - MSBuild более удобно оказалось. Тупо из-за того что студийные проекты совместимы с MSBuild.
Edited 2012-12-04 21:21 (UTC)

[identity profile] migmit.livejournal.com 2012-12-05 08:49 am (UTC)(link)
Я как-то раз отлаживал этот MSBuild. Причём именно императивный xml. Причём не кастомный, а мелкософтовский.

Нашёл багу. Какую - не помню.