Saya terlibat dalam menjaga portofolio aplikasi .NET yang cukup besar. Juga dalam portofolio adalah aplikasi warisan yang dibangun di atas platform lain - C ++ asli, Formulir ECLIPS, dll.
Saya memiliki kerangka kerja kompleks di atas NAnt sekarang yang mengelola pembangunan untuk semua aplikasi ini. Kerangka kerja build menggunakan NAnt untuk melakukan sejumlah hal berbeda:
- Tarik kode dari Subversion, serta buat tag di Subversion
- Bangun kode, gunakan MSBuild untuk .NET atau kompiler lain untuk platform lain
- Mengintip ke dalam file AssemblyInfo untuk menambah nomor versi
- Apakah menghapus file tertentu yang seharusnya tidak dimasukkan dalam build / rilis
- Rilis kode ke folder penempatan
- Kode zip untuk keperluan cadangan
- Menyebarkan layanan Windows; mulai dan hentikan mereka
- Dll
Sebagian besar dari hal-hal itu dapat dilakukan hanya dengan NAnt, tetapi kami membangun beberapa tugas tambahan untuk NAnt untuk melakukan beberapa hal yang khusus untuk lingkungan kami. Juga, sebagian besar proses di atas digeneralisasi dan digunakan kembali di banyak skrip pembuatan aplikasi kami yang berbeda, sehingga kami tidak mengulangi logika. Jadi itu bukan kode NAnt sederhana, dan bukan skrip build sederhana. Ada puluhan file NAnt yang datang bersama-sama untuk menjalankan build.
Akhir-akhir ini saya tidak puas dengan NAnt karena beberapa alasan: (1) sintaksnya buruk - bahasa pemrograman di atas XML benar-benar mengerikan untuk dipertahankan, (2) proyek ini sepertinya mati karena anggur; belum ada banyak pembaruan akhir-akhir ini dan sepertinya tidak ada yang benar-benar memimpin. Mencoba membuatnya bekerja dengan .NET 4 telah menyebabkan beberapa poin rasa sakit karena kurangnya aktivitas ini.
Jadi, dengan semua latar belakang yang menghalangi, inilah pertanyaan saya. Mengingat beberapa hal yang ingin saya selesaikan berdasarkan daftar di atas, dan mengingat bahwa saya terutama berada di toko .NET, tetapi saya juga perlu membangun proyek non-.NET, apakah ada alternatif untuk NAnt yang harus saya pertimbangkan beralih ke?
Hal-hal di radar saya termasuk Powershell (dengan atau tanpa ular ), MSBuild dengan sendirinya, dan menyapu . Ini semua memiliki pro dan kontra. Misalnya, apakah MSBuild cukup kuat? Saya ingat menggunakannya bertahun-tahun yang lalu dan sepertinya tidak memiliki kekuatan sebanyak NAnt. Apakah saya benar-benar ingin tim saya belajar Ruby hanya untuk melakukan build menggunakan rake? Apakah psake benar-benar cukup matang dalam proyek untuk menyematkan portofolio saya? Apakah Powershell "terlalu dekat dengan logam" dan akhirnya saya harus menulis pustaka bangunan saya sendiri seperti membuat ular untuk menggunakannya sendiri?
Apakah ada alat lain yang harus saya pertimbangkan? Jika Anda terlibat dalam memelihara .NET portofolio dengan kompleksitas yang signifikan, alat bangun apa yang akan Anda lihat? Apa yang digunakan tim Anda saat ini?