2009-03-08 32 views
19

Dopo aver letto l'articolo "Flusso di lavoro PHP moderno" nello November 2008 edition of php|architect magazine che ha discusso il test dell'unità (phpUnit), gli strumenti di compilazione (Phing) e l'integrazione continua (Xinc), mi sono ispirato a saperne di più su alcuni degli strumenti disponibili per PHP , in particolare Phing.Strumenti di compilazione/integrazione PHP: li usi?

In passato ho spesso gestito la distribuzione su un server di produzione eseguendo il sito live come copia di lavoro di subversion e semplicemente eseguendo un "svn update" nella casella di produzione per distribuire l'ultima versione del codice.

Utilizzi strumenti di compilazione per il codice PHP? Quali sono i vantaggi che credi offrano rispetto all'utilizzo diretto da sovversione? Cosa dovrei cercare, o quali trucchi potrei affrontare?

+1

Il link alla rivista php | architect non funziona :( – AntonioCS

+0

@AntonioCS sembra cambiato da quando ho postato la domanda 10 mesi fa ... Risolto il problema: –

+0

@ LittleBobbyTables, Michael Berkowski, Rob, CL, Linus Kleen: 8K visualizzazioni + 17 voti non costruttivi ?? –

risposta

7

Ho usato sia Phing che Ant e preferisco quest'ultimo molto di più. Inizialmente sono andato con Phing perché è stato scritto in PHP, ma ad essere sincero non è maturo come Ant. Alla fine, avere un sistema di build maturo con una grande comunità vale di più.

Le cose fatte con Ant/Phing:

  1. Da un loalize base di checkout per una lingua specifica, assicurano le dipendenze ci sono (altre librerie, directory, ecc)
  2. se li avete, la compilazione dei modelli, ecc
  3. portare database di destinazione fino alla versione richiesta, a seconda della versione del codice verificato
  4. unit test run, ecc
+0

phing.ant gestisce nativamente le migrazioni di database o si integrano con uno strumento esterno? –

+0

Di solito uno strumento esterno. (Dipende da cosa intendi per "migrazioni" in realtà). – Jilles

2

Ho visto Phing che sembra davvero fantastico. Per il progetto a cui sto lavorando sto effettivamente utilizzando Apache's Ant. Io lo uso per fare un parecchie cose:

  1. combinare e comprimere Javascript e CSS (compressione fatto usando il YUI Compressor
  2. Sostituire i file di configurazione standard, con file di configurazione di produzione (ad esempio, rinominare config.php.production a config.php)
  3. file non necessari remove (come ad esempio il file Ant, build.xml)

penso Phing vale la pena guardare oltre Ant perché è nativa di PHP, che potrebbe essere bello. anche se si è fare qualcosa di più della semplice copia/spostamento di file in giro problemi di prestazioni quando ci si sposta nell'ambiente di produzione. Ho avuto un problema in cui il compressore YUI funzionava bene sul mio computer locale, ma sul VPS relativamente piccolo era molto lento.

+0

Penso che l'argomento "implementato in PHP" sia un po 'sopravvalutato, era il motivo esatto per cui scegliamo Phing in primo luogo, ma dopo 3 anni non abbiamo mai apportato alcuna modifica al nucleo di Phing. Ant invece è una community più matura/più grande e si integra bene con gli script PHP, se necessario. – Jilles

+3

Ricorda che, per alcuni di noi , le dipendenze sono importanti, non modificabili, semplicemente non vogliamo installare tutto questo Ja va roba quando non usiamo alcun Java altrove. – ssokolow

2

In un progetto su cui sto lavorando ora stiamo utilizzando phpUnderControl per eseguire test e ottenere feedback rapidi quando qualcosa è rotto. Abbiamo in programma di utilizzarlo per eseguire altri test come quelli scritti in Watir.

7

Un grosso problema che vedo con Phing è che crea un inutile livello di riferimento indiretto. PHP è un linguaggio di scripting e quindi può essere eseguito direttamente. L'uso della configurazione XML di Phing è inadatto per il linguaggio: fornisce una configurazione dichiarativa più leggibile, ma al costo di sacrificare la flessibilità della lingua. Con Ant (l'ispirazione per quella rotta) ha senso dal momento che Java non aveva quella flessibilità in quanto è meno dinamico e richiede la compilazione.

Purtroppo non ho visto molte buone alternative nello spazio PHP e, a differenza di altri linguaggi, gli strumenti di creazione non sono essenziali o fanno parte della cultura, quindi l'evoluzione di un'altra opzione ben supportata potrebbe non avvenire in tempi brevi.

Vorrei quindi attenermi alle opzioni più vicine a ciò che il PHP potrebbe fare da alle culture che supportano in modo più aggressivo gli strumenti di creazione. Io di solito uso Gradle. Rake fa anche un ottimo lavoro a seconda della lingua che vuoi imbrogliare (e potrebbero esserci altre opzioni simili). Dovresti anche valutare cose come il supporto di Webdriver se ti trovi in ​​quel tipo di cose. Altrimenti creare una soluzione leggera usando PHP e/o BASH dovrebbe coprire tutto mantenendo la trasparenza