Я займаюся підтримкою досить великого асортименту додатків .NET. Також у портфоліо є застарілі програми, побудовані поверх інших платформ - рідного C ++, ECLIPS Forms тощо.
Зараз у мене є складна структура побудови поверх NAnt, яка керує складами для всіх цих додатків. Рамка збирання використовує NAnt для виконання кількох різних речей:
- Витягніть код із Subversion, а також створіть теги в Subversion
- Створіть код, використовуючи MSBuild для .NET або інші компілятори для інших платформ
- Загляньте у файли AssemblyInfo, щоб збільшити номери версій
- Виконайте видалення певних файлів, які не повинні включатись у збірки / випуски
- Випускає код до папок розгортання
- Кодування Zip-файлів для резервного копіювання
- Розгорнути служби Windows; запустити і зупинити їх
- І т.д.
Більшість із цих речей можна виконати лише NAnt самостійно, але ми створили пару завдань для розширення, щоб NAnt робив якісь конкретні для нашого середовища умови. Крім того, більшість цих процесів, описаних вище, генерізовані та повторно використовуються у багатьох наших різних сценаріях побудови додатків, щоб ми не повторювали логіку. Отже, це не простий код NAnt, а не прості сценарії побудови. Є десятки файлів NAnt, які збираються для виконання збірки.
Останнім часом я був незадоволений NAnt з кількох причин: (1) його синтаксис просто жахливий - мови програмування поверх XML насправді жахливо підтримувати, (2) проект, здається, загинув на лозі; останнім часом не було тонни оновлень, і, схоже, ніхто не справді за кермом. Спроба налагодити роботу з .NET 4 викликає деякі больові точки через відсутність активності.
Отже, з урахуванням всього цього, ось моє запитання. З огляду на деякі речі, які я хочу виконати на основі цього списку вище, і враховуючи, що я передусім в магазині .NET, але мені також потрібно будувати проекти, які не є .NET, чи є альтернатива NAnt, яку я повинен розглянути перехід на?
Мої радари включають Powershell (з psake або без ), MSBuild сам по собі та граблі . У всіх цих плюсів і мінусів. Наприклад, чи достатньо потужний MSBuild? Я пам’ятаю, що використовував його багато років тому, і, здавалося, він не мав такої сили, як NAnt. Чи справді я хочу, щоб моя команда вчила Рубі просто робити будівель за допомогою граблів? Чи psake дійсно достатньо зрілий для проекту, щоб закріпити мій портфель? Чи є Powershell "занадто близьким до металу", і мені в кінцевому підсумку доведеться написати власну бібліотеку побудови, схожу на psake, щоб використовувати її самостійно?
Чи є інші інструменти, які я повинен розглянути? Якщо ви брали участь у підтримці .NET портфоліо значної складності, який інструмент побудови ви б шукали? Чим зараз користується ваша команда?