Domanda

Dopo aver letto il "moderno flusso di lavoro PHP" articolo nella edizione di novembre 2008 della rivista php | architect che discussione di unit test ( phpUnit ), strumenti di costruzione ( Phing ) e integrazione continua ( Xinc ) , Sono ispirato a saperne di più su alcuni degli strumenti disponibili per PHP, in particolare Phing.

In passato ho spesso gestito la distribuzione su un server di produzione eseguendo il sito live come copia di lavoro di sovversione ed eseguendo semplicemente un aggiornamento " svn " sulla scatola di produzione per distribuire l'ultima versione del codice.

Usi strumenti di compilazione per il codice PHP? Quali vantaggi ritieni possano offrire rispetto all'implementazione diretta dalla sovversione? Cosa dovrei cercare, o che cosa dovrei affrontare?

È stato utile?

Soluzione

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ù.

Cose fatte con Ant / Phing:

  1. Da un checkout di base loalize in una lingua specifica, assicurati che ci siano dipendenze (altre librerie, directory, ecc.)
  2. se li hai, compila modelli, ecc.
  3. Porta il database di destinazione alla versione richiesta, a seconda della versione del codice estratta
  4. esegue unit test, ecc.

Altri suggerimenti

Un grosso problema che vedo con Phing è che crea uno strato inutile di indiretta. PHP è un linguaggio di scripting e pertanto potrebbe essere eseguito direttamente. L'uso da parte di Phing della configurazione XML non è adatto al linguaggio: fornisce una configurazione dichiarativa più leggibile, ma a costo di sacrificare la flessibilità del linguaggio. Con Ant (l'ispirazione per quella rotta) ha senso poiché Java non ha avuto quella flessibilità in quanto è meno dinamico e richiede compilazione.

Sfortunatamente non ho visto molte buone alternative nello spazio PHP e, a differenza di altri linguaggi, gli strumenti di costruzione non sono così essenziali o parte della cultura, quindi l'evoluzione di un'altra opzione ben supportata potrebbe non avvenire presto.

Vorrei quindi attenermi a opzioni più vicine a ciò che PHP potrebbe fare da culture che supportano in modo più aggressivo strumenti di costruzione. Di solito utilizzo Gradle . Anche Rake fa 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 piace questo tipo di cose. Altrimenti, creare una soluzione leggera usando PHP e / o BASH dovrebbe coprire tutto mantenendo la trasparenza

Ho visto Phing che sembra davvero fantastico. Per il progetto a cui sto lavorando sto effettivamente utilizzando Antache di Apache . Lo uso per fare diverse cose:

  1. Combina e comprime Javascript e CSS (compressione eseguita utilizzando il YUI Compressor
  2. Sostituisci i file di configurazione standard con i file di configurazione di produzione (ad esempio rinomina config.php.production in config.php)
  3. Rimuovi i file non necessari (come il file build ant, build.xml)

Penso che Phing valga la pena dare un'occhiata a Ant perché è nativo PHP, il che potrebbe essere carino. Inoltre, se stai facendo qualcosa di più della semplice copia / spostamento dei file, cerca i problemi di prestazioni quando ti sposti nell'ambiente di produzione. Ho avuto un problema in cui il compressore YUI funzionava bene sulla mia macchina locale ma sul VPS relativamente piccolo era super lento.

Su un progetto su cui sto lavorando ora stiamo usando phpUnderControl per eseguire test e ottenere feedback rapido quando qualcosa è rotto. Abbiamo in programma di usarlo per eseguire altri test, come alcuni scritti in Watir .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top