Собрать всё, или Знакомимся с Cake (C# Make)

Зал 3 | 17:55


После сборки проекта Visual Studio, используемый ей MSBuild оставляет нас наедине с набором откомпилированных исполняемых файлов. Но понятие сборки и связанные с ним задачи включают в себя нечто большее. Бывает, нужно запустить тесты, выполнить преобразования типа ILMerge, подготовить nuget-пакеты, подготовить установочные пакеты, автоматически задеплоить на тестовое окружение, иногда перед сборкой в систему нужно что-то доустановить. При большом желании можно частично интегрировать это в сам файл проекта и запускать, но получается негибко, сложно, непонятно. Поэтому обычно это делается либо вообще вручную, либо набором разрозненных powershell-скриптов (в запущенных случаях это bat/cmd), прочитать и понять которые может один человек в команде, который их и писал. При использовании каких-то внешних утилит, таких как WiX или NSIS, скрипты часто предполагают, что их в систему кто-то уже установил, процесс часто нормально не документирован, в итоге если ответственный за сборку ушёл в отпуск и пропал со связи, возникают проблемы с тем, чтобы просто собрать всё по порядку до состояния установщика на «чистой» машине. Сами же скрипты — некоторая каша, так как PowerShell изучают на уровне, ровно необходимом для решения поставленной задачи хоть каким-то образом. А если у нас мобильное приложение и нужно его собирать на билд-агенте с Mac OS X, то помимо powershell-а появляется ещё один набор скриптов уже на bash.

Также встаёт проблема сложности процесса сборки. Процесс этот многоэтапный, а этапы — зависимые друг от друга. У нас могут быть разные цели при сборке проекта, требующие выполнения разного набора этапов (например, мы можем хотеть только запустить тесты или только подготовить итоговую сборку и выполнить деплой), и это в скриптах надо учитывать. Для работы с набором задач с зависимостями люди придумали системы сборки, самой известной и распространённой является Make. Основная проблема с их использованием заключается всё же в чужеродном синтаксисе и сохранении ряда присущих скриптам недостатков.

В докладе пойдёт речь о Cake — C# Make, системе сборки, позволяющей писать сборочные скрипты на обычном и понятным всем в команде C#, предоставляя при этом обширный набор DSL к разного рода часто используемым сборочным утилитам, которые система к тому же умеет самостоятельно загружать из интернета или же находить в системе нужную версию, что актуально, например, для MSBuild.

Скачать презентацию.

Никита Цуканов
Никита Цуканов kekekeks

Promarket

Начинал в Навителе с разработки под WinCE/Mobile на C/C++. В дальнейшем занимался разработкой VPN-сервиса с кроссплатформенным клиентом на Gtk#, торговой площадки Promarket, мейнтейнил Mono для Nokia N900, делал инструментарий для чиптюнинга автомобилей, мобильный мессенджер с End2End шифрованием, платёжную систему и ещё кучу всякого по мелочи. Имеет обширный опыт разработки подо всё подряд на зоопарке технологий, которым рад поделиться.


Все доклады