Platform pembuatan otomatis untuk .NET portofolio - pilihan terbaik? [Tutup]

10

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?

RasionalGeek
sumber

Jawaban:

2

Jika Anda sudah menggunakan TeamCity, Anda harus dapat menggunakan fitur yang ada untuk sebagian besar yang Anda butuhkan. Ini secara alami mendukung pembuatan file .sln Visual Studio dan jika Anda memerlukan hal-hal tambahan dilakukan untuk semua proyek Anda, Anda dapat memodifikasi file .target .NET Framework pada mesin build Anda, sehingga Anda tidak perlu mengubah file csproj individual.

Ini akan secara otomatis memeriksa dari Subversion, artefak zip, memungkinkan Anda untuk mengontrol file mana yang dianggap dapat digunakan artefak. Versi baru (6.0) juga memungkinkan beberapa langkah pembuatan, jadi ada peluang untuk penyebaran artefak xcopy ke berbagi.

Anda juga dapat menulis aplikasi / tugas Anda sendiri yang dapat dijalankan sebagai bagian dari build (melalui pelari baris perintah) dan melakukan apa pun yang Anda inginkan (seperti memulai / menghentikan proses Windows).

Adam Lear
sumber
3

Kami melakukan pendekatan terhadap tiga aktivitas berbeda, Build, Deploy, dan Install. Kami menggunakan TFS untuk server build dengan beberapa info ke Powershell. Kami kemudian menggunakan Powershell untuk menyelesaikan semua bagian Menyebarkan dan Menginstal yang cukup kompleks dan di beberapa server baik lokal maupun cloud. Saya sangat senang mempelajari Powershell dibandingkan MSBuild atau alat lain. Saya juga memiliki pengalaman yang baik dengan Visual Build di masa lalu.

Matt McQ
sumber
2

Lihatlah hudson dan MSBuild sebagai pasangan. Kekuatan ini hadir dengan kemampuan MSBuild yang kuat dan plugins hudson .

Misalnya, Anda bisa menggunakan hudson dan menjalankan skrip NAnt Anda hingga Anda bermigrasi ke MSBuild dan kemudian skrip MSBuild Anda juga bisa dijalankan.

Secara khusus membahas poin Anda:

  • Subversi dan Penandaan
  • MSBuild
  • Mengintip AssemblyInfo diminta pada SO, tetapi solusinya mungkin tidak sesuai dengan keinginan Anda
  • MSBuild dapat menghapus file dengan mudah
  • "Lepaskan kode ke folder penempatan" - Anda dapat membuat sistem build melewati langkah itu dan menyebarkannya secara otomatis menggunakan sejumlah metode. Atau Anda dapat FTP jika Anda suka.
  • MSBuild dapat melakukan zip
  • Layanan Windows, lagi-lagi MSBuild adalah teman Anda di sini.
Steven Evers
sumber
Terima kasih atas info tentang MSBuild. Sepertinya ada lebih banyak kekuatan di sana daripada terakhir kali saya mencoba menggunakannya. Mengenai Hudson, apakah ini memberikan manfaat di luar yang diberikan server CI lain, seperti TeamCity, yang saat ini kami gunakan? Saya mencoba untuk menghindari terlalu banyak masalah status quo di sini, dan mengganti server CI kami pada saat yang sama kami mengganti skrip build kami tampaknya lebih menyakitkan.
RationalGeek
Menurut pendapat saya yang sederhana, saya pikir TeamCity fantastis ... dan hudson lebih baik. Mereka dapat terlihat melakukan fungsi yang sama, sampai Anda ingin melakukan sesuatu yang luar biasa - kemudian hudson menang. Jujur saja, hudson dapat menganalisis (stylecop / fxcop) -> build-> test-> tag-> backup lokal dan offsite-> deploy sembari tetap memberi Anda informasi terkini melalui RSS, SMS, XFD's.
Steven Evers
Hmm ... tidak ada dalam daftar itu yang tidak mungkin dengan TeamCity, tapi mungkin lebih mudah dengan Hudson. Either way, kecuali kita mencapai beberapa titik nyeri dengan TC Saya tidak berpikir kita akan segera beralih.
RationalGeek
@ jkohlhepp: Kesulitannya adalah bahwa ada banyak banyak solusi di ruang yang sama. Pada akhir hari, hudson adalah mudah dan 100% gratis. IIRC, satu hal yang mungkin dimiliki TC pada hudson adalah pembangunan multi-agen.
Steven Evers
2

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):

  • Mudah digunakan (versi terbaru: 2010)
  • Ini sepenuhnya terintegrasi dengan Visual Studio dan Team Foundation Server
  • Ini menjadi standar seperti MS Build
  • Gratis dengan Bizspark (untuk startup)

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
Saya belum mempertimbangkan opsi ini, tetapi saya tidak berpikir itu akan menjadi pilihan yang realistis bagi kami karena kami tidak menggunakan TFS sama sekali, dan telah memveto upaya untuk pindah ke sana di masa lalu (untuk anggaran dan alasan lain). Tetapi terima kasih atas saran yang merupakan ide yang menarik.
RationalGeek
Itu tidak ekspansif. Jika manajemen Anda sensitif terhadap harga, MS Build akan menjadi pasangan yang sempurna. Saya dulu hanya bekerja dengan MS Build + CruiseControl.NET dan itu berhasil! Akan menambahkan itu dalam jawaban saya.
@Pierre 303: Demi keingintahuan, mengapa Anda ingin menyingkirkan Studio Build Otomatis?
RationalGeek
@Pierre 303: Biaya TFS bukan satu-satunya masalah. Toko saya adalah bagian dari perusahaan yang lebih besar, dan mereka telah melakukan standarisasi pada Subversion dan alat-alat lainnya dan menjadi "non-standar" dan pergi dengan TFS menyebabkan masalah politik.
RationalGeek
@ jkohlhepp: tidak mudah digunakan, tidak terintegrasi dengan Visual Studio (setidaknya versi yang saya miliki) dan masih jauh dari standar.
2

FinalBuilder dapat melakukan semua barang yang Anda minta, dengan GUI yang bagus dan aplikasi server pembangun dilemparkan secara gratis.

Mat
sumber
2

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.

softveda
sumber
1

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.

Wyatt Barnett
sumber
Tampaknya sebagian besar jawaban ini menyamakan CI dengan skrip build. Saya selalu mempertimbangkan membangun skrip sebagai smart, dan server CI menjadi hal yang baru saja dimulai build berdasarkan pada trigger. Tapi mungkin Anda benar dan saya perlu memikirkan kembali ini.
RationalGeek
1

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.

Srikanth Remani
sumber
1
FYI TeamCity gratis jika Anda memiliki kurang dari 20 konfigurasi gedung dan kurang dari 20 pengguna. Juga, jika Anda adalah proyek open source, Anda dapat menerapkannya untuk lisensi tanpa batas gratis.
RationalGeek
0

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.

Mchl
sumber
Hudson lebih merupakan platform integrasi berkelanjutan, dan bukan platform build yang sesungguhnya. Kami memiliki server CI di tempat - TeamCity, yang berfungsi baik dengan NAnt. Namun, alasan saya ingin mengganti NAnt adalah karena mempertahankan skrip NAnt itu menyakitkan. Menggunakan skrip saat ini melalui Hudson tidak menyelesaikan masalah ini. Terima kasih atas sarannya.
RationalGeek
IMHO Hudson sangat terbatas dalam apa yang dilakukannya dengan benar dengan proyek VS. Checkout tidak terikat dengan perubahan seperti yang Anda harapkan dan di balik layar itu tidak melakukan apa-apa selain menjalankan file batch yang Anda buat melalui antarmuka web dan banyak plug-in. Pelaporan itu agak bagus jika Anda bisa membuatnya bekerja dengan baik.
Bill