SORU
1 ŞUBAT 2010, PAZARTESİ


Bir dağıtım kurmak PHP projeler için / CI döngü oluşturmak /

Yalnız bir geliştirici benim çoğu zaman, PHP tabanlı büyük çoğunlukla bir kaç proje üzerinde çalışıyorum. Profesyonelleştirmek ve kod tabanı değişiklikleri nasıl işlendiğini otomatikleştirme ve geçiş mümkün köklü değişiklikler yapmak zorunda kalmadan bir takım çalışma yapan, Sürekli Entegrasyon süreci oluşturmak istiyorum.

Ben ne yapacağım şimdi, ben yerel bir test ortamı için her proje; kullandığım SVN için her proje; değişiklikler test yerel olarak, ve daha sonra transfer için bir on-line versiyonu, genellikle FTP üzerinden. API belgelerine kaynak kod ile oluşturulur; Birim testleri yavaş yavaş alıyorum birşeyler ama benim günlük rutin bir parçası değil.

Bu "döngü" öngören ben aşağıdaki yapardın: kurmak

  • Bir değişiklik kümesini yerel olarak test edildikten sonra SVN içine bakıyorsunuz.

  • Oluşturma işlemi başlar. SVN BAŞ revizyonunu kontrol edildi, gerekli değiştirilebilir, ve yükleme için hazır alır.

  • API Belgelerine eğer detayına kadar henüz başlamadım bile otomatik olarak oluşturulan varsayılan bir şablon, bütün kod tabanı tarama kullanarak alır.

  • Yeni revizyon FTP üzerinden uzak konuma (bazı dizin yeniden adlandırma, chmodding, ithal veritabanları, ve seviyor. Dahil) dağıtılır Bu zaten phing çok fazla gibi bir şey, ama tabii ki alternatifler için açığım.

  • Birim testleri önceden tanımlanmış bir yerde ikamet eden çalıştırın. Başarısızlık ya da başarı, E-Posta, RSS ya da kap ve bir web sayfası içine koyabilirim (tercihen) HTML çıktısı kullanma hakkında bilgi sahibi değilim.

  • (isteğe bağlı olarak) bir son-kullanıcı "changelog" metin dosyasında önceden tanımlanmış yer alır güncelleme ile önceden tanımlanmış bir parçası gönderim iletisi ("artık mümkün için filtre için de "foo" ve "bar" aynı zamanda). Bu mesajı mutlaka SVN muhtemelen çok daha fazla iç bilgi içeren mesaj, tamamlama ile aynı değildir.

  • Malzeme kodu ölçümleri, kod stil kontrol gibi bu yüzden benim birincil odak şu anda değil, ama uzun vadede, kesinlikle. Out-of-the-box, bu getirmek çözümleri üzerine nazikçe baktı.

Arıyorum

  • Görüş ve deneyimleriya da benzer bir durumda olduğunu ve başarılı bir şekilde buna bir çözüm uygulamış insanlardan

  • Özellikle,adım adım iyi öğreticiler ve izlenecek yollarbu kurmak için nasıl

  • Çözümler sağlayanmümkün olduğunca otomasyoniskelet bir API oluşturarak , örneğin, ve benzeri durumlarda, her yeni proje için test.

ve ayrıca

  • Ürün önerileri. Şimdiye kadar bildiklerimi phing/bina ve phpUnderControl raporlama bölümü için Hudson ant. Hepsini görebildiğim kadarıyla severim, ama tabii ki onlarla ayrıntılı bir deneyimim var.

Bengömülmekiş, bu kadar basit çözüm yönünde güçlü bir eğilim var. Eğer bir özelliği yoksa diğer taraftan, bu konuda çok sınırlı olduğu için ağlarım. :) Nokta-ve-tıkla çözümler Hoşgeldiniz. Ayrıca PHP projeler ile ticari ürün önerileri için buradayım.

Benim Kur

Windows yerel olarak çalışıyorum (tam olarak 7, ve çoğu istemci projeleri bir LAMBA, genellikle barındırma paylaşılan yığın (= hayır uzaktan SSH) üzerinde çalışır. Benim kendi ortamında çalıştırabilirsiniz çözümler arıyorum. Bunun için bir Linux VM kurmak için hazır, hiçbir sorun yaşıyorum. Çözüm ise bütün yönleri sağlarlar eğer sadece benim için ilginç barındırılan açıklanan ya da diğer bölümleri ile etkileşim için yeterince esnek.

Ödül Beni en Çok mil verecek hissediyorum bu cevabı kabul ediyorum. Mükemmel bir giriş, bir sürü var, birden fazla cevap kabul edebilmeyi isterdim. Herkese teşekkürler!

CEVAP
8 ŞUBAT 2010, PAZARTESİ


buildbot, CruiseControl.net, CruiseControl ve ** 16 yaşında yaşadım. Tüm bunlara rağmen gerçekten* gerçekten çok karmaşık bağımlılık vakaları ile çok fazla bir zorluk oldu CruiseControl sevdim. buildbot ayarlamak kolay değil, ama güzel bir aura (benim gibi python, hepsi bu) var. Ama hudson, eski üç kazandı çünkü:

  1. Sadece bunu ayarlamak kolay
  2. Kolay özelleştirmek için
  3. İyi görünüyor ve işlevsellik bakış güzel
  4. Nokta-ve-tıklatın güncelleştirmeleri, kendisi için ve yüklü olan tüm eklentileri var. Bu daha çok takdir ediyorum gerçekten güzel bir özelliktir

Uyarı: sadece yukarıda belirtilen yapı sunucuları için base mono koştu CC.net () linux olarak kullanılan, ama onlar tüm - doktorlar - çapraz platform çalışmasına göre.

Bir hudson server kurma

Ön koşullar:

  • Java (1.5 seni gayet iyi hizmet edecektir)
  • Subversion sunucusu erişimi (hudson kullanıcı için ayrı bir hesap var) okuyun

Burada, sadece bir şey

java -jar hudson.war

Bu çalışma küçük bir sunucu örneğini de biraz önce konsol ve gerekir gidin yükleme http://localhost:8080, yoksa başka bir şey çalışan port peşin (belirtebilirsiniz başka bir bağlantı noktası tarafından geçen --httpPort=ANOTHER_HTTP_PORT seçeneği için yukarıdaki komutu) ve her şey iyi gitti 'yükleme' süreci.

Eğer mevcut plugins dizini (http://localhost:8080/pluginManager/available) giderseniz, yukarıda belirtilen görevleri (subversion desteği varsayılan olarak yüklenir) desteklemek için eklentiler bulabilirsiniz.

Eğer bu senin iştahını kabartmak varsa, java uygulama sunucusu tomcat jetty gibi yüklemeniz gerekir. Installation instructions tüm önemli uygulama sunucuları için kullanılabilir

Güncelleme: Kohsuke Kawaguchi hudson windows service installer bir inşa etmiştir

Hudson'da bir proje başlatıyor

Aşağıdaki bağlantıları yürüyüş-hudson ile çalışan bir örneği http://localhost:8080 bulunan varsayar

  1. Soldaki menüsünden Yeni bir proje seçin (http://localhost:8080/view/All/newJob)
  2. Bu iş için bir ad verin ve listedeki Build a free-style software project tik
  3. Basarak 'Tamam' olacak iş yapılandırma sayfasına gidebilirsiniz. Tüm seçenekleri onları yanında küçük bir soru işareti var. Bu basarak seçeneği ile ilgili bir yardım metni getirir.
  4. Seçenek grubu 'Kaynak Kod Yönetimi' Subversion kullanıyor olacaksınız. altında Hudson hem url erişim yanı sıra yerel modül erişim kabul eder
  5. Seçenek grubu altında 'Tetikler İnşa', kullanırsınız 'Anket SCM'. Sözdizimi burada kullanılan cron, yani yoklama subversion */5 * * * * olurdu her 5 dakikada bir depo
  6. Proje oluşturma süreci, seçenek grubu altında belirtilen '' Kurmak. Eğer zaten bir karınca ihtiyacınız olan tüm hedefleri ile dosya oluşturmak varsa, şanslısınız. Sadece 'karınca' ve hedefin adını yazın. Çağırmak seçin Seçenek grubu olarak kutudan maven ve kabuk komutlarını destekler, ama aynı zamanda plugin available for phing var.
  7. Ek kızdırdı 'İnşa Eylemler inşa eserlerinin', e-posta bildirimleri veya arşivleme gibi. Sonrası eylemler yapı

Hangi hudson herhangi bir eklenti var süreçlerini ayarlamak için, ya da doğrudan yapı Kur içinde bir kabuk ile çağırabilir veya 24* *olabilir

Tuzaklar:

  • Eğer bu eserler üretmek inşa varsa, hudson düzenli aralıklarla kendisi sonra temizlemek için hatırlıyorum.
  • Eğer 20'den fazla proje tuzak varsa, düşünündeğilhudson varsayılan ana sayfa olarak inşa durumlarını görüntüleme

İyi şanslar!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cyriak

    cyriak

    29 Mart 2006
  • Plugable

    Plugable

    19 Mayıs 2010
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011