Pertanyaan
Apakah ada alasan sah untuk TIDAK menggunakan SVN untuk penyebaran produksi, atau apakah ini semata-mata kasus preferensi pribadi dan tidak ada kasus nyata terhadap SVN?
Latar Belakang
Tempat kerja saya memiliki budaya pelepasan tag pada SVN dan kemudian menyebarkan rilis tersebut langsung ke berbagai server web menggunakan svn co
atau svn switch
termasuk langsung ke produksi.
Saya pribadi memiliki masalah dengan ini karena saya percaya bahwa tanpa menggunakan skrip build dan deploy atau bentuk atau deploy otomatis Anda kehilangan pengaturan lingkungan integrasi karena tidak terdokumentasi. Namun lebih dari itu saya punya firasat bahwa mungkin ada bahaya tersembunyi untuk melakukan apa yang telah diabaikan, sesuatu yang belum membesarkan kepalanya yang jelek.
Saya telah menyampaikan kekhawatiran saya kepada staf operasi yang bertanggung jawab untuk menyebarkan kode ke berbagai lingkungan kami (pementasan, pra-prod, produksi), dll. Argumen mereka cukup banyak sehingga ini bekerja cukup baik sejauh ini, tidak ada alasan untuk berubah.
Edit:
Apa yang saya maksud tentang membangun dan menggunakan:
Misalnya, jika pengembang memerlukan pengaturan web.config ditambahkan untuk lingkungan tertentu. Web.config umumnya tidak disimpan di svn sehingga file-file ini diperbarui secara manual tanpa bentuk skrip build otomatis. Jadi, jika mereka hilang atau OPS lupa menambahkan bidang ke web.config untuk rilis maka Anda memiliki masalah.
Skrip build yang mengatakan menggunakan XMLPoke untuk secara otomatis menghasilkan web.config yang sesuai untuk lingkungan tertentu sangat ideal karena Anda memiliki skrip versi yang mendokumentasikan semua perubahan yang diperlukan untuk setiap lingkungan Anda.
Metode Pembuatan dan Penyebaran Saat Ini
Untuk proyek yang dipermasalahkan pengembang membuat rilis secara manual, proyek lain memiliki langkah pembuatan terotomatisasi baik dengan NANT, atau MSBuild yang OK.
Migrasi database untuk sebagian besar proyek adalah melalui skrip DB, atau skrip migrasi (Migrator.NET), atau Paket CMS.
CI biasanya dilakukan oleh Team City berdasarkan basis per checkin, kami memiliki proses peninjauan kode bahwa semua tiket dilakukan di cabang dan kemudian peer review untuk validasi dan kebenaran / kualitas sebelum memeriksa ke dalam bagasi (berfungsi dengan baik).
Namun penyebaran kode aktual hampir selalu melalui SVN, baik melalui checkout dari rilis yang ditandai atau lebih umum lagi SVN Switch. Ini adalah sesuatu yang aneh dengan saya bahwa kami menggunakan repositori kami sebagai bagian dari proses penyebaran.
Konfigurasi umumnya tidak berubah sangat sering, satu-satunya hal yang akan ada di file konfigurasi adalah informasi khusus lingkungan. Yang lainnya ada di db.
Jangan salah paham ini berfungsi, ini bekerja dengan baik. Namun saya ingin mencoba dan mendorong untuk membangun dan menyebarkan otomatis. Saya telah menggunakan ini dengan Rails dan Capistrano, dan untuk proyek pribadi menggunakan Cygwin, Nant dan SSH.
Lebih penting lagi, saya akan memerlukan argumen valid yang sangat spesifik untuk membuat kolega saya berubah menggunakan Automate build and deploy.
Atau adakah TIDAK ADA argumen yang sahih yang menentang penggunaan SVN secara khusus untuk digunakan untuk produksi?