Herkes php / mysql ile iş akışını dağıtma / geliştirme / kademelendirme var mı?

4 Cevap php

Php / mysql web geliştirme için iyi bir iş akışı hakkında düşünüyorum.

Herkes bazı ipuçları var mı?

4 Cevap

Burada ne olduğunu:

  1. Herkes (vb kod, testler,) kendi dalında kendi projeleri üzerinde çalışmaktadır
  2. Her şey iyi görünüyor, bu Trunk birleştirilir
  3. phpUnderControl Trunk onarır, bizim phpUnit testlerin tüm çalışan belgeler, güncellenen db oluşturur, vb
  4. Tüm bu geçerse, biz Kararlı birleştirmek
  5. Kararlı tam Trunk gibi yeniden alır
  6. Kararlı elle Üretim bizim sunucuya yükseltilir

Biz veritabanı yükseltmeleri ve Üretime bizim itme özen birkaç özel komut dosyaları var. Bizim veritabanı için biz tek bir klasördeki tüm deltalar tutmak ve komut uygular, gerekirse mevcut deltalar karşı geçerli DB seviyesini kontrol eder ve.

Üretime tanıtımı için tüm üretim verileri aşağı çeker ve sonra değişiklikleri yukarı itmek için rsync çalışan başka bir komut dosyası var.

Eğer sunucular üzerindeki denetim ne düzeyde söz yok, ama genel süreç genel gelişimi için aynı olacaktır.

Herkesin kesin uygulamaya bağlı olarak biraz farklı Postadölesan şeyler yapar düşünüyorum. İşte Kurulum:

Bir yayınlanmadan önce:

  • Herkes /trunk taahhüt eder.
  • Biz serbest rulo istiyorum, biz /tags/yymmddhhiiss için gövde kopyalayın.
  • Biz etiketi stabilize.

Stabilize bir kez, biz dağıtmak komut dosyasını çalıştırın:

  • Üretim sunucusunda, yeni etiketi çıkış.
  • Veritabanının bir dökümü almak.
  • Cinleri durdurmak ve web uygulama (lar) kapattı.
  • Sembolik bağ Anahtarı /current taze kontrol etiketine işaret etmek.
  • Göç komut dosyalarını çalıştırabilirsiniz.
  • Cinleri ve uygulamaları yeniden başlatın.

Biz hızlı bir şekilde küçük bir değişiklik dışarı itmek gerekiyorsa, biz mevcut etiketi için birleştirme, ve biz sonra sunucuda çok daha basit bir düzeltme işlemi çalıştırabilirsiniz:

  • Cinleri durdurmak ve web uygulama (lar) kapattı.
  • Run svn update
  • Cinleri ve uygulamaları yeniden başlatın.

Postadölesan süreçlerini otomatize / yapılanmaya yönelik bazı araçlar olduğunu unutmayın. Adında bağımsız bir proje olarak kullandığı, batch system Phing biridir, ve Symfony kendi vardır pake. Bu yeterli değil sanki Ve, Zend Framework oluşturmak üzeresiniz their own variant. Gerçekten tüm bir karmaşa biraz, ama Phing muhtemelen en yaygın olarak kullanılmaktadır. Ayrıca, Ant veya Capistrano gibi, non-php özgü bir şey kullanabilirsiniz. Biz sadece temelde aynı ihtiyacı doldurur kabuk komut dosyalarını kullanın.

Biz de gövdeden dışarı denetler ve tüm testleri çalışan bir sürekli yapı çalışan var. Şu anda biz sadece bunu yapıyor kabuk komut temel bir koleksiyonu var, ama biz PhpUnderControl veya xinc geçmek için düşünüyoruz.

migrations adım belki biraz açıklama hak ediyor. Postadölesan yeni sürümü için çalıştırılmalıdır veritabanına değişiklikleri yanı sıra diğer görevleri içerir. Bizim göçler an biraz basit; Biz sadece bir .php salkımı ve .sql komut ile bir klasör var ve göç sırasında, Postadölesan sırayla çalıştırılır. Biz koşmak edildiği değişiklikleri takip yolu, yeni bir etiket yapıldıktan hemen sonra migrations klasörünü boşalttıktan gereğidir. Muhtemelen değişiklikler olsa çalıştırmak edildiği oturum açmak için veritabanı kullanmak daha akıllı olacaktır. Biz bu amaç için ruckusing gibi bir şey benimsiyor kabul edilir.

Çıkış Phing.

Bizimki bir dragonmantank (Biz Devel dalında geliştirmek ve biz canlı yapmak istiyoruz, biz canlı şube içine tüm değişiklikleri birleştirme svn) daha basit yaktı, ama ben şiddetle (veri çoğunlukla okumuş ki yapılandırma verilerinizi tedavi önerecektir onun tarafından oluşturulan uygulama ve tarafından değil) kodunu kaynak gibi. Sürüm senin. Sql dosyaları. Veri gibi çok kaynak kodu olduğu gibi web sitenizin işlevselliğini etkiler çünkü.