Saya perlu membawa situs ke kontrol versi, dan mengatur lingkungan Integrasi berkelanjutan

41

Saya seorang wirausahawan dengan proyek Drupal 6x yang mulai cukup kecil sehingga tidak memerlukan kontrol versi (per pengembang), tetapi sekarang saya yakin tidak ada jalan tanpa itu. Ada dokumentasi luas tentang JIRA, lengkap dengan Cerita Pengguna yang ditulis dengan baik yang mencakup semuanya. Saya membaca sedikit tentang bagaimana ini bisa dilakukan dan muncul dengan rencana berikut -

  1. Pisahkan kode situs dari database menggunakan modul
    1. Konteks
    2. fitur
    3. Lengan kuat
    4. Profiler
  2. Masukkan kode dalam repositori SVN dan buat situs pementasan
  3. Buat cermin dari server pementasan pada server produksi EC2
  4. Buat tes Selenium, dan jalankan di cloud menggunakan Saucelab
  5. Buat alur kerja build di JIRA Studio menggunakan Elastic Bamboo untuk menjalankan pembaruan otomatis
  6. Perbarui dan instal profil menggunakan Drush Make
  7. Jalankan pembaruan di server produksi (saya tidak yakin bagaimana)

Untuk mulai dengan, saya telah membuat daftar sekitar 50 "Fitur", masing-masing dengan komponennya (tampilan, jenis konten, modul dll). Ini tidak diragukan lagi akan menantang karena situs tersebut berisi sekitar selusin modul khusus dan layanan web, belum lagi selusin contoh jenis "aplikasi" konten yang berisi kode khusus (sebagian besar yang ingin saya konversi menjadi tampilan atau modul yang dapat diupgrade) . Hal yang baik adalah bahwa situs tersebut belum di produksi sehingga risikonya masih terbatas.

Adakah yang punya pengalaman dalam melakukan hal serupa? Perangkap dan batasan apa yang harus saya hadapi? Saya akan sangat menghargai saran untuk meningkatkan / memperbaiki rencana di atas, atau wawasan atau saran yang mungkin Anda miliki untuk para ahli di luar sana.

druflex
sumber
Ini pertanyaan yang sangat menarik. Itu adalah sesuatu yang saya pikirkan untuk diterapkan di situs web saya juga, tetapi menyerah karena tampaknya tidak efisien. Jika Anda melakukannya, tolong beri kami masukan Anda.
Tivie
3
Jelas merupakan pertanyaan yang menarik, tetapi juga sulit dijawab. Anda mengajukan beberapa pertanyaan, jadi sulit memberi Anda jawaban yang lengkap / terbaik. Hanya satu petunjuk: IMHO, tidak ada proyek yang terlalu kecil untuk kontrol versi. Apalagi sekarang dengan VCS terdistribusi seperti git, dibutuhkan 5s untuk meletakkan kode Anda di repositori lokal. Lihat juga drupal.stackexchange.com/questions/316/...
Berdir
Dalam retrospeksi, memang tidak ada proyek yang terlalu kecil untuk kontrol versi (jika saya hanya mengetahuinya saja). Saya telah melalui tautan itu dan memunculkan pertanyaan penting lainnya. Jika kita menarik inti Drupal dari repositori gitnya sendiri, haruskah kita menggunakan git untuk proyek Drupal alih-alih SVN? Alasan kami menggunakan SVN adalah karena ada dukungan asli untuknya di JIRA Studio yang penting bagi kami mengingat kami ingin menggunakan fitur pembuatan otomatis JIRA (Elastic Bamboo). Maaf untuk beberapa pertanyaan :-(
druflex
UPDATE: Setelah peninjauan kode, ditentukan bahwa ada banyak kode khusus dalam proyek, yang akan sangat sulit untuk mengekspor menggunakan fitur. Jadi opsi di depan kita adalah - (1) Selesai dan lepaskan apa adanya, dan mulai pengembangan paralel di D7 menggunakan kontrol versi yang tepat. Ini berarti mempermasalahkan database nanti. Mengerikan. (2) Mengulangi fitur penting di D6, lepaskan, lalu lakukan Integrasi Berkelanjutan. (3) Mengulangi fitur penting dalam D7, lepaskan, lalu lakukan Integrasi Berkelanjutan. Pertanyaan utamanya adalah berapa lama waktu yang dibutuhkan untuk masing-masing opsi ini. Jika Anda adalah saya, apa yang akan Anda pilih?
druflex

Jawaban:

23

Ok, saya akan coba ini :) Saya tidak akan bisa menjawab pertanyaan Anda sepenuhnya, tapi mungkin memberi Anda beberapa petunjuk menarik. Perhatikan bahwa penomoran saya tidak dalam tanggapan langsung ke Anda :)

  1. Seperti yang sudah saya sebutkan di komentar, tidak ada proyek yang terlalu kecil untuk kontrol versi. Saya pribadi merekomendasikan Git. Alasannya adalah kecepatannya yang luar biasa (waktu tunggu dalam git diukur dalam milidetik, bukan detik) dan sejumlah besar fitur. Mungkin agak sulit untuk mengambilnya, karena nama dan argumen yang aneh tetapi dokumentasi berikut menjelaskan banyak di antaranya benar - benar bagus: http://www.eecs.harvard.edu/~cduan/technical/git/ . Alasan lain adalah sekarang digunakan oleh drupal.org, jadi mengetahui git akan membantu Anda ketika Anda ingin berkontribusi kembali (menyediakan tambalan, menguji tambalan, modul rilis, ...)

  2. Yang mengatakan, jika Anda ingin menggunakan SVN karena alasan tertentu (seperti integrasi dengan layanan yang Anda rencanakan untuk digunakan), maka lakukanlah. SVN juga berfungsi dengan baik dan jauh lebih baik daripada tidak ada kontrol sumber. (Kecuali jika Anda bertanya Linus Torvalds ..). Juga, sering ada cara untuk bermigrasi dari satu VCS ke yang lain jika Anda berubah pikiran. SVN -> Git berfungsi dengan baik, misalnya.

  3. Ketiga, dekati langkah demi langkah ini. Jangan mencoba melakukan semuanya sekaligus. Memberi Anda (dan pengembang Anda) waktu untuk mempelajari alat baru.

  4. Beralih dari Drupal 6 ke Drupal 7 bukanlah hal yang sepele. Apalagi dengan banyak kode custom. Catat saja apakah ada banyak perubahan API dan konsep baru (seperti sistem entitas / bidang), ada juga poin bahwa banyak modul yang berkontribusi belum sepenuhnya siap.

  5. Manajemen penyebaran adalah salah satu titik lemah Drupal, yang juga tidak banyak berubah di Drupal 7. Kami menyadari masalahnya dan orang-orang bekerja keras untuk menyelesaikan masalah ini untuk Drupal 8: http://groups.drupal.org / build-system-change-management / cmi . Fitur dll membantu, tetapi itu bukan peluru perak. Tidak semuanya dapat diekspor sebagai fitur.

  6. Ada juga beberapa opsi Drupal-specifc untuk menyebarkan lokasi pementasan / produksi. Pantheon (masih dalam versi beta) dan Acquia Dev Cloud mungkin layak untuk dicoba.

  7. Integrasi berkelanjutan, pengujian otomatis penting dan sangat berguna tetapi juga memerlukan waktu untuk mengatur, menulis tes, dan sebagainya. Waktu yang mungkin atau mungkin tidak Anda miliki saat ini. Tetapi terutama tes otomatis adalah area di mana mudah untuk melakukan peningkatan tambahan. Setelah Anda memiliki lingkungan yang diatur untuk menjalankannya, Anda dapat menulis lebih banyak dan lebih banyak tes sesuai waktu.

Jadi, inilah rekomendasi saya untuk pertanyaan yang diperbarui di komentar:

Selesai dan lepaskan apa adanya, tetapi mulai gunakan VCS (sistem kontrol versi) untuk Drupal 6 sekarang. Buat lingkungan pementasan untuk situs Anda. Lihatlah modul apa (kontribusi) yang Anda gunakan dan periksa apakah port ke Drupal 7 layak pada saat itu. Jangan meremehkan waktu yang dibutuhkan. Juga mulailah untuk meningkatkan proses pengujian / penyebaran, dimulai dengan apa yang menurut Anda akan memberi Anda manfaat / biaya paling besar.

Anda juga dapat membuat pertanyaan tindak lanjut yang lebih spesifik atau mencari yang sudah ada. Seperti yang Anda lihat, bahkan hanya memberikan beberapa petunjuk untuk pertanyaan seperti ini bisa menjadi sangat besar dan membutuhkan sedikit waktu.

Berdir
sumber
Terima kasih banyak atas jawaban komprehensif yang luar biasa ini. Saya cukup banyak memutuskan apa yang Anda rekomendasikan. Bahkan termasuk Git sebenarnya. Saya akan memindahkan JIRA dari host ke standalone sehingga saya bisa menggunakan plugin Git. Jadi D6 itu. Lepaskan versi saat ini sekarang, dan mulai membuat kembali salinan praktik terbaik yang tepat secara paralel, menggunakan sebanyak mungkin kode yang ada. Terima kasih untuk dukungannya. Tepuk tangan!
druflex
+1 Nasihat yang bagus, komprehensif, sederhana dan nyata. Anda berbicara dari pengalaman. Terima kasih.
therobyouknow