Jenkins, MSBuild и Includes

Однажды оказалось, что Jenkins фейлит билды MSVS 2012 (которые выполняются посредством консольного msbuild), с сообщениями о том, что не найдены всякие заголовочные файлы (например al.h). Как известно, в студии начиная с 2010 “глобальные” настройки путей к инклюдам, либам и прочему перенесены в странное место – Property Manager->$Project|$Configuration -> Microsoft.Cpp.$Platform.user. Ну и ладно, казалось бы, зашли, прописали и всё хорошо. Студия компилит, в консоли msbuild тоже нормально всё делает… Вот только Jenkins запускает своего slave windows сборщика от системного пользователя, а настройки путей, они не глобальные, а per-user оказывается, поэтому он и не подхватывает эти пути.

Самым простым решением оказалось, как ни странно, создать каталог, скопировать туда “свой” файлик C:\Users\konst\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props и добавить в командную строку запуска /p:UserRootDir=d:\msbuild_home

Build Succeeded

Наверняка все программисты рано или поздно сталкиваются с тем, что запускают билд, который должен идти пару минут, после чего открывают браузер и читают “форумы/новости/что-то ещё” пока идёт сборка. Через 15 минут вспоминают, что был запущен билд, но 13 минут уже потеряно.

В общем надоело терять из-за таких вещей время и вместо того, чтобы запретить доступ к интернету я покопал гугль и нашёл прикольную программку – Growl for Windows – она умеет делать нотификации по самым разным событиям

Put simply, Growl lets you know when things happen. Files finished downloading, friends came online, new email has arrived – Growl can let you know when any event occurs with a subtle notification. The rest of the time, Growl stays out of your way.

Самое ценное – это то, что к этой программке есть visual studio плагин, который умеет сообщать об окончании сборки проекта/солюшена.

Выглядит это как всплывающее сообщение в системном трее, которое говорит, что билд успешно собрался или зафейлился.

Поставил себе и всем рекомендую – оно вроде и про свн умеет сообщать (правда в моём случае это не очень важно, т.к. у нас почтовая рассылка налажена).