Sürüm kontrolü için bir site getirmem ve sürekli Entegrasyon ortamını kurmam gerekiyor


41

Sürüm kontrolüne ihtiyaç duymayacak kadar küçük başlayan Drupal 6x projesine sahip bir girişimciyim (geliştiriciler başına), ancak şimdi onsuz olmadığına ikna oldum. JIRA hakkında, her şeyi kapsayan iyi yazılmış Kullanıcı Hikayeleri ile birlikte kapsamlı belgeler bulunmaktadır. Bunun nasıl yapılabileceğini biraz okudum ve aşağıdaki plana ulaştım -

  1. Modül kullanarak site kodunu veritabanından ayırın
    1. bağlam
    2. Özellikleri
    3. Güçlü kol
    4. Profiler
  2. Kodu bir SVN deposuna yerleştirin ve bir hazırlık sitesi oluşturun
  3. EC2 üretim sunucusunda hazırlama sunucusunun bir aynasını oluşturun
  4. Selenyum testleri oluşturun ve bunları Saucelabs kullanarak bulutta çalıştırın
  5. Otomatik güncelleştirmeleri çalıştırmak için Elastic Bamboo kullanarak JIRA Studio'da bir yapı iş akışı oluşturun
  6. Drush Make kullanarak profilleri güncelleme ve yükleme
  7. Güncellemeleri üretim sunucusunda çalıştırın (nasıl yapıldığından emin değilim)

Başlangıç ​​olarak, her biri bileşenleri (görünümler, içerik türleri, modüller vb.) İçeren yaklaşık 50 "Özellik" in bir listesini yaptım. Site, bir düzine özel modüle ve web servisine sahip olduğu için, birçoğu özel kod içeren (çoğu kez yükseltilebilir görünümlere veya modüllere dönüştürmek istediğim) içerik türü "uygulama" örneklerinden bahsetmediği için zorlayıcı olmayacaktır. . İyi olan, şantiyenin henüz üretimde olmadığı, bu yüzden risk hala sınırlı.

Benzer bir şey yapma konusunda herhangi bir deneyimi olan var mı? Hangi tuzaklar ve sınırlamalar ile karşılaşmayı beklemeliyim? Yukarıdaki planı iyileştirmek / düzeltmek için olan önerileri veya dışarıdaki uzmanların benim için sahip olabileceği içgörü veya önerileri takdir ediyorum.


Bu çok ilginç bir soru. Bu, web sitemde de uygulamayı düşündüğüm bir şeydi, ancak verimli görünmüyordu. Eğer onunla devam edersen, lütfen bize girişini yap.
Tivie

3
Kesinlikle ilginç bir soru, ama aynı zamanda cevaplamak zor. Birden fazla soru soruyorsunuz, bu yüzden size en iyi ve en iyi yanıtı vermek zor. Sadece bir ipucu: IMHO, sürüm kontrolü için hiçbir proje çok küçük değildir. Özellikle şimdi git gibi dağıtılmış VCS ile, kodunuzu yerel bir depoya koymak 5 saniye sürer. Ayrıca bakınız drupal.stackexchange.com/questions/316/…
Berdir

Geçmişe bakıldığında, sürüm kontrolü için aslında hiçbir proje çok küçük değildir (eğer o zaman bilseydim). Bu bağlantıdan geçtim ve bu önemli bir soruyu daha ortaya çıkarıyor. Drupal çekirdeğini kendi git deposundan çekeceksek, git SVN yerine Drupal projeleri için mi kullanmalıyız? SVN kullanmamızın sebebi, JIRA'nın otomatik yapım özelliklerini (Elastik Bambu) kullanmak istediğimiz için bizim için önemli olan JIRA Studio'da yerel destek olması. Birden fazla soru için özür dilerim :-(
druflex

GÜNCELLEME: Bir kod incelemesinden sonra, projede özellikleri kullanarak dışa aktarmanın gerçekten zor olacağı özel bir kod olduğu tespit edildi. Bu yüzden önümüzdeki seçenekler şunlardır: (1) Son haliyle bitirin ve bırakın ve uygun sürüm kontrolünü kullanarak D7'de paralel gelişime başlayın. Bu, veritabanını daha sonra silmek demektir. Korkunç. (2) D6’daki temel özellikleri yineleyin, bırakın, ardından Sürekli Entegrasyon yapın. (3) D7'deki temel özellikleri yeniden yapın, bırakın, ardından Sürekli Entegrasyon yapın. Asıl soru, bu seçeneklerin her birinin ne kadar zaman alacağıdır. Ben sen olsaydın ne için oy verirdin?
druflex

Yanıtlar:


23

Tamam, bunu deneyeceğim :) Sorunuzu tam olarak cevaplayamayacağım, ama belki de size birkaç ilginç ipucu verebilirim. Numaralandırmamın size doğrudan cevap vermediğini unutmayın :)

  1. Yorumda da belirttiğim gibi, sürüm kontrolü için hiçbir proje çok küçük değildir. Git'i şahsen öneririm. Sebepler, muhteşem hızdadır (git'te bekleme süresi, saniye cinsinden değil milisaniye cinsinden ölçülür) ve çok fazla özelliktir. Garip isimler ve argümanlar nedeniyle almak zor olabilir, ancak aşağıdaki belgeler pek çoğunun gerçekten iyi olduğunu açıklıyor : http://www.eecs.harvard.edu/~cduan/technical/git/ . Bunun bir başka nedeni de şuan drupal.org tarafından kullanılmasıdır, bu nedenle geri dönüş yapmak istediğinizde git'in size yardımcı olacağı bilgisi (yamalar sağlama, yamaları test etme, sürüm modülleri açma ...)

  2. Bir nedenden ötürü SVN kullanmak istiyorsanız (kullanmayı planladığınız servislerle entegrasyon gibi), o zaman devam edin. SVN de çok iyi çalışıyor ve kaynak kontrolünden çok daha iyi. (Linus Torvalds'a sormazsanız ..). Ayrıca, fikrinizi değiştirirseniz bir VCS'den diğerine geçiş yapmanın çoğu yolu vardır. Örneğin SVN -> Git iyi çalışıyor.

  3. Üçüncüsü, bu adıma adım adım yaklaşın. Her şeyi bir kerede yapmaya çalışmayın. Size (ve geliştiricilerinize) yeni araçları öğrenmek için zaman verin.

  4. Drupal 6'dan Drupal 7'ye geçmek önemsiz bir şey değil. Özellikle çok fazla özel kodla. Sadece tonlarca API değişikliği ve yeni kavramlar var (varlık / saha sistemi gibi), birçok katkıda bulunan modülün henüz tam olarak hazır olmadığı da bir nokta var.

  5. Dağıtım yönetimi , Drupal 7'deki kadar değişmeyen zayıf Drupal noktalarından biridir. Sorunun farkındayız ve insanlar bunu Drupal 8 için çözmek için çok çalışıyorlar: http://groups.drupal.org / build-systems-değişim yönetimi / cmi . Özellikleri vs. yardımcı olur, ancak gümüş bir mermi değildir. Her şey bir özellik olarak dışa aktarılamaz.

  6. Ayrıca, evreleme / üretim alanlarını dağıtmak için birkaç Drupal-belirtilmiş seçenek vardır. Pantheon (hala beta sürümünde) ve Acquia Dev Cloud , incelemeye değer olabilir.

  7. Sürekli entegrasyon, otomatik testler önemlidir ve gerçekten faydalıdır, ancak kurulum, test ve benzeri şeyler yazmak için zaman gerekir. Bu noktada sahip olabileceğiniz veya olamayacağınız zaman. Ancak özellikle otomatik testler, artan iyileştirmeler yapmanın kolay olduğu bir alandır. Onları çalıştırmak için ayarlanmış bir ortamınız olduğunda, zaman elverdikçe daha fazla test yazabilirsiniz.

Yani, yorumdaki güncellenmiş soru için benim tavsiyem :

Bitir ve olduğu gibi bırak, ancak şimdi Drupal 6 için bir VCS (versiyon kontrol sistemi) kullanmaya başla. Siteniz için bir hazırlık ortamı oluşturun. Hangi (katkıda bulunan) modülleri kullandığınıza bakın ve bu noktada Drupal 7 için bir bağlantı noktasının uygun olup olmadığını kontrol edin. Sürecek zamanı hafife almayın. Ayrıca, test etme / dağıtım sürecini geliştirmeye başlayın, size en fazla fayda / maliyet getireceğini düşündüğünüzden başlayarak.

Ayrıca, daha spesifik takip soruları oluşturabilir veya önceden var olan sorulara bakabilirsiniz. Gördüğünüz gibi, bu gibi bir soruya sadece birkaç ipucu vermek bile çok büyüyebilir ve biraz zaman alabilir.


Bu kadar kapsamlı bir cevap için çok teşekkür ederim. Tam olarak ne önerdiğine karar verdim. Git'i dahil etmek bile olsa. Git eklentisini kullanabildiğim için JIRA'yı barındırılan bilgisayardan bağımsız bir konuma taşıyacağım. D6 öyle. Mevcut sürümü şimdi yayınlayın ve mümkün olan en fazla sayıda kodu kullanarak uygun bir en iyi uygulama kopyasını paralel olarak yeniden oluşturmaya başlayın. Destek için tekrar teşekkürler. Şerefe!
druflex

+1 İyi tavsiye, kapsamlı, sokaktan aşağı doğru ve gerçek. Tecrübeden konuşuyorsun. Teşekkürler.
therobyouknow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.