Nasıl "bir adım build" uygularım

8 Cevap php

Sunucu canlı geliştirme ortamından değişiklikleri almak için "bir itme build" sahip olması çok güzel ve sık savunduğu olan bir şeydir.

Ben küçük bir ekip bir lamba yığını çalışan ve şu anda tek bir üretim sunucusunda dağıtıldığında sürüm kontrolü için SVN kullanmak (kalkınma için başka bir sunucu ve yakında ayrı bir mysql sunucusu olacak şekilde) ile gemide geldi. Ben şimdi bir yerde gemide geliyor önce, bana eksik olan örgütsel bir çok şey koyuyorum.

Ben görmek için merak ediyorum

  1. kişi şu anda bu (bir adım yapı) nasıl yapıyorsun
  2. benim durum (SVN ile küçük takım, LAMP çevre) için, onu en iyi uygulamak nasıl görmek

Ben veritabanı değişiklikleri (şema) ve ayrıca taşıma olacağını ilgileniyorum bazı özel sorunlar varsa ve "paketler" insanlar şeyler organize tutmak için (örneğin RPM'lerin, armut, vb) kullanarak ne tür.

8 Cevap

Bu ant Hudson ile birlikte kullanılabilir. Bir cazibe gibi çalıştı.

Hudson da diğer yapı sistemleri ile çalışmak ve sadece java projeleri olacaktır. Bu kurulum birden fazla yapı hedefleri sağlayan otomatik veya elle çalışır. Ayrıca tek bir komutla sizin inşa çalıştırmak için bir yol uygulamak için zorlar.

Bu sunucu dağıtılan sunucu için yapı çalıştırmak için gereken süre boyunca kullanılamaz olacaktır iletişim sorunları çözmez.

Bizim şema güncelleme ve değişiklikler için, iki şeyi yapmak için kurulum bizim ant komut:

  1. Güncelleme SVN'de bir fark var sadece şema çalıştırın.
  2. Şema değişiklikleri inşa edildikten sonra bir şema çöplükte edin.
  3. Hayır güncelleme şema olsaydı, sadece bir veritabanı yüklemek için dökümü kullanın

Bu hakkı almak için bir kaç denemeden sürdü, ama aniden biz birden çok geliştiriciler farklı şemaları olma sorunu çözmüştü. Bu günlük bunu yapabilirdi, geliştirme şema güncellemek için dökümü almak için çok kolay oldu.

Biz yapmak. Biz Anthill Pro tüm bizim oluşturur ve dağıtımları yapılacak denilen bir ürün kullanın. Bu, dosyaları kontrol etmek için kurulmuş bir iş akışı süreci vardır oluşturur yapmak, birim testleri çalıştırmak ve sonra sunuculara kodunu dağıtmak. Süreci vb komut satırı programları çalıştırmak gibi hemen her şey dağıtmak için kullanabilirsiniz

Bu ortamda çok bağlıdır, çünkü bu basit bir yemek kitabı cevabı var sanmıyorum. Ile gelip ne olursa olsun, ben çok dağıtım komut kendilerini kontrol kaynağı olmak, bir script tabanlı yaklaşımı öneriyoruz. Bu komut dosyaları da (aşağıya bakınız) yapı çözümleri ile daha iyi bütünleşmesini sağlayacak.

Üretim ortamında çalıştırmak için basit, senaryo sadece son olsun (veya belirli bir sürümünü almak) kaynak denetimi için komut olacaktır.

Sonraki sorun veritabanı dağıtımıdır. Ben küçük ve orta ölçekli projeler için en gibi gelmiş bir çözüm, her veritabanındaki bir şema sürüm tablosunu korumak ve tüm DDL ve (onlar sıkıştırılmış arşivler kullanmak veri kaynaklarına dahil) kaynak denetimi veri güncelleme komut sahip olmaktır. Komut (000002 ... vb ... 000.001 başlayarak) numaralandırılmalı ve ben ilk sadece çalıştırmak dağıtım komut varolan veritabanını yedekler, sonra çalıştırır sonra şema sürümü tablodan son çalışma veritabanı komut alır, ve buna göre şema sürüm tablosunu güncelleyerek doğru sırayla kaynak denetiminde bulunan herhangi yeni bir veritabanı komut.

Bu yaklaşım bana oldukça hızlı bir şekilde sıfırdan veritabanını yeniden sağlar.

Birlikte alındığında iki yaklaşım mümkün hızlı vb birçok farklı hazırlama makineleri, QA çevre, beta, için kod tabanı dağıtmak için yapmak


Sadece biraz daha karmaşık senaryolar için, çalıştırmak gereken bir Kieveli et gibi, entegrasyon yapı sunucu devam ediyor. al. aslında düzenli olarak tüm dağıtım "yeniden inşa" ve bu nedenle yukarıdaki "elle" aday olacağını tam olarak ne yapmak için komut içeren önerdi.

Veritabanı dağıtım da her veritabanı komut dosyası için bir geri alma komut dosyası oluşturarak daha sofistike hale getirilebilir. Daha sonra bu işlemek için biraz denetleyici app yazmak gerekir. Orada bu tarz şeyler için çeşitli ÖSS çözümleri vardır ve bunlardan biri sizin ihtiyaçlarınıza uygun olabilir.

ANCAK, bir üretim ortamına veritabanını otomatik dağıtmak asla emin olun ;-)

Bir PHP proje için en iyi aracı inşa Ant oldukça benzer olan, Phing muhtemelen, ama PHP ile yazılmış. Bu svn repo şeyleri kapma gibi bu gibi bir şey için ihtiyacınız olan tüm gerekli şeyleri içerir.

UNIX (ve Windows) hakkında "yapmak" senin arkadaşın. Bu olsa bir öğrenme eğrisi var, ama buna değer oluyor. Make güncelleştirme kaynağı olabilir, derlemek, test, vs, vs

Eğer bir adım inşa gidiş var sonra, kolaylıkla devamlı kurar içine açabilirsiniz.

Biz merkezi bir sunucu üzerinde onlar inşa edildi değişim numarası ile işaretlenmiş, bizim tamamlanan inşa tüm var. Bir şey taahhüt aldığında (biz Perforce kullanabilirsiniz, ancak bu SVN için çalışacak), bizim yapı kutularından birinde bir cronjob yapı olduğunu daha yeni bir değişim, kaynak ağacını indirmek için bir http isteği yangınları var olduğunu fark eder ve bina başlar (gmake ile, daha çok). Sürekli sadece birkaç kolay adımda inşa :)

Bundan sonra, otomatik olarak test otomasyon çalışması hepsine sahip kısa bir adımdır. Tam her sonrası inşa ve (muhtemelen konuşlandırılabilir!) Kodu test işlemek.

Eğer bir şey derlemeye gerek yok çünkü betik dili için, karınca-varyant veya CruiseControl varyantı kullanmak gibi olağan tavsiyeleri çok anlamına gelmez.

Veri tabanında şaşmayalım. Üç önemli şeyler devamlı entegrasyon konusunda, otomatikleştirmek ve otomatik olduğunu. Bu, boş bir veritabanı bina dış veri ithal ve yükseltme yeni sürüm senaryosunu ve bazı komut kullanarak çalıştırmak için hazır her şeyi olması anlamına gelir. Bu iyi bir örnek yapılandırmak ve php kendisi kullanarak yüklemek diyelim MediaWiki, gibi bir şey olabilir. Ben, gün boyunca taze veritabanı dağıtmak birimi sınamaları çalıştırmak ve herhangi bir başarısız olursa e-postalar göndermek için çalışan yapı sunucu öneriyoruz.

Ben bunu düşünürken yolu bir komut dosyası temelde kaynak denetiminden tüm dosyaları \ kaynakları almak, her şeyi birlikte çekmek istediğiniz bir son 'ürünü' oluşturmak için tüm adımları uygulayın

Kafamın üst Off bu adım (yani, belirli bir proje için ortalama ne olursa olsun), son olsun derlemek, herhangi bir diğer dosyaları ürünü tamamlamak için gereken olsun, yükleyici oluşturmak (gerekirse), koşmak birim testleri, sunucu üzerinde pay çıkış içerebilir ve yeni bir sürüm yaratmak olmuştur kullanıcıları bilgilendirmek (ya da bir değil varsa onlara ve neden). Ve başka ne yapmanız gerekebilir.

Ben genellikle toplu dosya çeşit ile başladım Geçmişte, ardından çeşit özelleştirilmiş oluşturucu exe yarattı. Ama her bir ağrı haline geldiğini sürdürmek. Sonunda Ben şimdi sadece aşağıdaki iki üründen birini kullanın ... 3. parti uygulamalar için bir hareket.

http://www.kinook.com/VBP/

http://www.finalbuilder.com/