metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-12-11 09:43 pm

CI

Думал, чем бы сделать уведомления о завершении или сломе билда, потому что за 10 минут тестовой сборки обязательно куда-нибудь отвлекут. Если с завершением проблем никаких нету - у меня все собирается MSBuild и в конец проекта я просто сунул проигрывание гаммы пищалкой, то с сломом все плохо - вроде 3.5 MSBuild не умеет события "выполнить при ошибке".

Втащил вот такое: http://www.cruisecontrolnet.org/projects/ccnet/wiki#Get-started-with-CruiseControlNET
Адова содомия. Документирована хреново, но поднимается с полпинка, вроде работает. Причем вроде нормально интегрируется с моей msbuild чернью - автоматом вытаскивает из hg обновления, при их наличии делает билд, иначе считает, что с прошлого раза ничего не изменилось.
Смотреть более навороченные решения как-то влом, если это перестанет устраивать - тогда и подумаю.

PS: Бугога, дичайшая польза. Я еще даже не настроил билд целиком - а оно уже носом тыкает меня в мои ошибки.

[identity profile] berezovsky.livejournal.com 2012-12-11 07:22 pm (UTC)(link)
о, я такое в одной известной Корпорации настраивал
там ещё светофор есть и уведомления на мыло

[identity profile] metaclass.livejournal.com 2012-12-11 07:24 pm (UTC)(link)
Вот, я ради светофора и мыла и втащил :)

[identity profile] aamonster.livejournal.com 2012-12-11 07:38 pm (UTC)(link)
Да в них во всех есть, и настраиваются все с полпинка. Я как-то своё поделие на батниках, мсбилде и планировщике заменял на TeamCity - сборка заметно упростилась.

[identity profile] bydlorus.livejournal.com 2012-12-11 07:45 pm (UTC)(link)
А мы CI допиливали сами. Доп. страницы для заказчиков чтобы скачивать билды и т.п. Шо касается уведомлений, они слались скриптом на gtalk.

(Anonymous) 2012-12-11 07:47 pm (UTC)(link)
В самом MSBuild можно Хотя СС.NET, конечно, правильнее.

(Anonymous) 2012-12-11 08:02 pm (UTC)(link)
Что-то оно не пропустило. В самом скрипте можно указать OnError.

[identity profile] jek-hor.livejournal.com 2012-12-11 07:56 pm (UTC)(link)
Команда сборки ядра Linux в текущем моём проекте (чисто моя, не в составе сборочной системы):

(make -j3 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage && cp arch/arm/boot/zImage /media/KERNEL/ && umount /media/KERNEL && notify-send -i ~/.autotest_images/pass.png "Compiled" ) || notify-send -i ~/.autotest_images/fail.png "Failed"

По окончании сборки вываливается смайлик на пол-экрана соответствующего цвета.

Плохо вам в винде без notify :)

[identity profile] eternal-leave.livejournal.com 2012-12-11 08:00 pm (UTC)(link)
Да хрен бы с ним, с notify — у них хотя бы || работает-то?

[identity profile] metaclass.livejournal.com 2012-12-11 08:05 pm (UTC)(link)
Внезапно: MSBuild и СС.NET используются именно потому что они выполняют функцию обработки ошибок и заменяют вот эти ваши красноглазые операторы

[identity profile] eternal-leave.livejournal.com 2012-12-11 08:46 pm (UTC)(link)
Так у них есть код возврата или нет? Если есть — то в чем проблема-то была?

[identity profile] metaclass.livejournal.com 2012-12-11 08:01 pm (UTC)(link)
И шо, оно может еще уведомление с работы домой шлет?:)

[identity profile] jek-hor.livejournal.com 2012-12-11 08:14 pm (UTC)(link)
Ну мне это не надо --- цикл полной пересборки занимает минут 10-15, и это нужно очень редко, обычно хватает пары минут. Это не CI, просто рабочая сборка для отладки. Но таки добавить туда вызов mail -s "Success!" email@example.com ничего не мешает.

[identity profile] volodymir-k.livejournal.com 2012-12-11 08:22 pm (UTC)(link)
Помнится ещё в 1998 году в конторе net send активно юзалось. Тоже мне бином.

Насчёт "экрана" -- какое детство, у вас видимо десктоп собирает и потом простаивает.
Глядишь, лет через 10 узнаете про тестирование билда.

[identity profile] jek-hor.livejournal.com 2012-12-11 08:57 pm (UTC)(link)
Вы моего резюме не читали, и на работу не принимали — не делайте поспешных выводов, пожалуйста.

Это всего лишь рабочая сборка для отладки, занимающая время не столь большое, чтобы выселять её на отдельный сервер, и не столь малое, чтобы на неё медитировать.

[identity profile] denisioru.livejournal.com 2012-12-12 05:48 am (UTC)(link)
FinalBuilder используем, тоже ок.

[identity profile] alexandr0.livejournal.com 2012-12-12 11:08 am (UTC)(link)
CrusieControl с суффиксом NET не видел. Но Jenkins удобнее, чем CrusieControl без суффиксов.

[identity profile] nicka-startcev.livejournal.com 2012-12-12 12:13 pm (UTC)(link)
>MSBuild не умеет события "выполнить при ошибке".

а хотя бы код возврата умеет?
Тогда из скрипта пускать.

если и это не умеет - то настроить внешний вочдог и пинать его событиями "пока что всё собирается хорошо" и "всё собралось".

[identity profile] nicka-startcev.livejournal.com 2012-12-12 12:16 pm (UTC)(link)
в общем, делать из модногламурной няшки деталь как для линупса.

[identity profile] metaclass.livejournal.com 2012-12-12 12:28 pm (UTC)(link)
Да, MSBuild и сам по себе ближе к нормальным инструментам, чем к гламурным няшкам.

[identity profile] metaclass.livejournal.com 2012-12-12 12:16 pm (UTC)(link)
На самом деле он все умеет, это в документации непонятно, к какой версии что относится.
Из скрипта хреново - тут ключевая идея избавится от скриптов вообще - оставить только софт с явной проверкой кодов возврата и руганью на них по умолчанию (MSBuild и этот вот CI сервер).