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?
sumber
Saya menggunakan Automated Build Studio . Saya ingin menyingkirkannya.
Satu-satunya alasan mengapa saya tidak beralih ke 100% MS Build atau Team Foundation Build adalah biaya yang diperlukan untuk membangun kembali skrip yang berfungsi sempurna hari ini. Script tidak banyak berubah ...
Namun, untuk produk berikutnya, ini akan menjadi Team Foundation Build tanpa ragu-ragu untuk alasan utama berikut (ada banyak lagi):
Karena Anda berada di. NET juga, saya sangat menyarankan Anda untuk menggunakan TFB.
Jika Anda tidak dapat mengajukan permohonan untuk Bizspark atau tidak mampu membeli lisensi, Anda dapat menggunakan CruiseControl.NET + MS Build dan beberapa skrip dukungan. Di perusahaan utilitas besar tempat saya bekerja, kami menggunakan CruiseControl.NET untuk membangun, menguji, menyebarkan, dan melaporkan semua proyek kami. Itu termasuk penyebaran layanan web otomatis.
sumber
FinalBuilder dapat melakukan semua barang yang Anda minta, dengan GUI yang bagus dan aplikasi server pembangun dilemparkan secara gratis.
sumber
Saat ini saya sedang melakukan apa yang Anda lakukan (yaitu dari membangun ke pengemasan untuk penyebaran) menggunakan MSBuild (> 3000 baris skrip). CI menggunakan CruiseControl.Net dan mudah-mudahan saya bisa pindah ke TeamBuild di masa depan. MSBuild rumit (pemrograman dalam XML) tetapi cukup kuat khususnya pemrosesan batch dan pelacakan ketergantungan. Itu secara aktif dipelihara dan ditingkatkan dalam versi .Net baru dan merupakan dasar dari membangun sistem dalam Visual Studio dan TFS. Juga file proyek studio visual sebenarnya adalah proyek MSBuild dan saya dapat menghubungkan ke berbagai titik ekstensi. The MSBuild ekstensi paketmemiliki banyak tugas tambahan dan itu mudah untuk membuat tugas Anda sendiri secara terprogram. Saya sarankan memberi MSBuild pemikiran yang serius. Akhir-akhir ini saya juga belajar PowerShell dan menemukan itu mudah untuk tugas-tugas tertentu khususnya dalam tahap penyebaran, seperti menginstal dan mengkonfigurasi sertifikat, IIS dll.
Edit proyek MSBuild di VisualStudio karena memahami sintaksis dan memberi Anda intellisense. Berikut adalah beberapa utilitas bagus lainnya yang akan membantu MSBuild.
MSBuild Launch Pad - Untuk ekstensi shell
MSBuild SideKicks - Secara grafis edit, jalankan, dan debug skrip.
sumber
Mungkin Anda meminta terlalu banyak skrip build Anda dan tidak cukup server build Anda - dengan team city, Anda dapat dengan mudah memiliki skrip sederhana yang menyelesaikan setiap peluru Anda, dalam bahasa atau tumpukan apa pun yang masuk akal dan menggunakan tugas-tugas build TeamCity untuk rantai hal-hal bersama yang sesuai.
sumber
Saya sangat merekomendasikan TeamCity, mudah untuk mengkonfigurasi dan mengatur. MSBuild lebih disukai daripada NAnt karena alasan sederhana bahwa semua file proyek / solusi di vs2008 / 2010 adalah file MSBuild secara teknis, tetapi Anda dapat mengkonfigurasi TeamCity dengan MSBuild atau NAnt.
Tentu, TeamCity akan dikenakan biaya. Saya pribadi diberi pilihan akan lebih suka menyapu, hanya karena gesekan dengan alat Ruby dibandingkan dengan yang lain meskipun psake juga kandidat yang baik.
sumber
Apakah Anda mempertimbangkan Hudson ? Mungkin agak merepotkan, karena ini membutuhkan server aplikasi Java untuk berjalan, tapi saya pikir itu bisa membiarkan Anda menggunakan skrip NAnt Anda saat ini dan membangun di atasnya menggunakan alat lain.
sumber