Nasıl işlemi [Phing kullanarak] Derlemenizi yönetirim?

1 Cevap php

Ben otomatikleştirmek için Phing kullanmaya çalışıyorum:

  • testleri çalışan
  • [dbdeply kullanarak] Her Geliştirici makinede DB göçleri çalışan
  • üretim dağıtım gerekli

Ben projemde bir yapı klasör eklemek ve bu klasörde benim yapı yapılandırma dosyaları ve db deltalar tüm koymak mantıklıdır düşünüyorum. ve SVN depo içine tüm bu taahhüt. o check-out zaman svn öylesine her geliştirici güncellenen inşa dosyaları alacak. ve yeni değişiklikler ile yaptığı DB güncelleştirmek için yapı çalıştırmak mümkün olacak.

on the production server: I was planning to add another build file there to get the latest Tagged version in svn and perform CSS & JS compression.


Ben de PHPUnderControl kullanarak entegrasyonu devam uygulamak planlıyordum, bu yüzden her yapı sonucu takip edebilir ve yapı başarısız olduğunda haberdar olsun.

Eğer öyleyse, bu tüm mantıklı mı sizce, yoksa başka daha iyi bir öneriniz var mı?

1 Cevap

Ne söylemek mantıklı: ben sık sık kullanmak ne oldukça yakın (sometimes with ant, sometimes with phing, and sometimes with some shell-scripts).

build dizininde, ben böyle bir şey olurdu:

build/
    testing/
    development/
    staging/
    production/
    common/

Biri her alt dizinde build.xml dosyasıyla - Başka common dizininde yer build.xml dosyası, fikir olmak dahil olmak üzere tüm kadar "ortak koymak için ortak "build.xml dosyasındaki" mümkün olduğunca kod ", ve mümkün olduğunca az xml kodunu içeren başına ortamda belirli dosyaları, var.

Bu import task that exists in the last version of phing (not sure it's in the stable version -- I'm using an SVN checkout of phing, to have this one, for the project I'm currently working on) ile yapılabilir.


One thing, though : you say you want to deploy to production from the production server ; I would rather, instead :

  • on a "development" server :
    • SVN ihracat
    • JS / CSS ve tüm bu sıkıştırmak
    • Bir tar.gz arşivi oluşturmak
  • üretim sunucusuna bu arşiv yükleyin
  • on the "production" server :
    • arşiv yüklenen un-sıkıştırmak
    • (Daha fazla bilgi için, here verdiğim cevaba bakınız) kaynaklarının yeni sürümünü kullanmak için sembolik bağın bir çift değiştirmek
    • DB yapılması gereken ne güncellemek

: Fikir olma

  • do as few things as possible on the production server
    • sadece bu durumda bir şey yanlış giderse
    • ve durumda, bir gün, üretim sunucu SVN sunucuya erişimi yok
  • çeşitli üretim sunucularında dağıtılabilir fiziksel bir arşiv var


Oh, and, as a sidenote : you have to write some kind of documentation of "how to deploy to production", step by step !

Bu tatil ve başkasının çünkü acil bir bug-fix üretimi dağıtmak zorunda gün gerçekten yararlı olacak ;-)