Ecco come ho finito per risolvere questo problema finora:
directory di codice sorgente:
build/ - build files for phing and environment-specific properties files
build.xml
src_qa.properties - properties to use the qa server as the source for a deployment
dst_qa.properties - properties to use the qa server as the destination for a deployment
etc... for other environments
conf/ - contains environment specific configuration files, each in a subfolder named after the environment
dev/
db-config.php - config file for HyperDB - http://codex.wordpress.org/HyperDB
default - Apache conf that holds ServerAlias configs for multi-site WordPress
hosts - useful for developers to redirect their browser to various domains in different environments
htaccess.dist - for WPMU
httpd.conf - main Apache config file, specific to each environment
my.cnf - mysql config file
wp-config.php - main wordpress config file
qa
(same as dev/ but with different values in each file)
staging
(same as dev/ but with different values in each file)
prod
(same as dev/ but with different values in each file)
src/ - wordpress source code
wp-admin/
wp-content/
mu-plugins/
plugins/
themes/
wp-includes/
test/ - holds WP test suite and custom tests for plugins, themes, etc...
sto usando Hudson CI Server (http://hudson-ci.org/) per per automatizzata e manuale costruisce utilizzando attività sovversione checkout , phing, phpunit, ecc ... In sostanza, il server Hudson estrae il codice dalla sovversione a seconda di ciò che si desidera distribuire e rsync i file da distribuire dal server CI al server di destinazione.
Oppure, nel caso di un'implementazione dalla gestione diretta alla produzione, Hudson esegue il rsync dei file dalla gestione temporanea, fino al server CI e quindi il backup in produzione.
devo costruire l'installazione di posti di lavoro a Hudson per le seguenti parti di funzionalità:
core WP code - deploys core WP files and mu-plugins from src to dst
svn to qa
svn to staging
staging to prod
WP plugins/ folder - deploys only the plugins folder
svn to qa
svn to staging
staging to prod
WP themes/ folder - deploys the entire themes folder
svn to qa
svn to staging
svn to prod
Specific themes - deploys a specific theme (chosen through a drop down during the build process using Hudson's parameterized build feature - http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build)
svn to qa
svn to staging
svn to prod
I lavori Hudson hanno anche la possibilità di distribuire i file PHP specifiche ambientali (ad esempio wp-config.php, db-config. php), così come i file di configurazione di Apache e MySQL nelle posizioni corrette su ciascun server. In alcuni casi, utilizziamo più server Web e più server di database e la maggior parte della configurazione di build viene gestita tramite il file di sviluppo phing e i file .properties citati sopra.
In futuro, quando disponiamo di un ambiente di integrazione di sviluppo, eseguiremo probabilmente implementazioni automatizzate dopo il controllo svn di qualsiasi codice.
Questa configurazione consente agli sviluppatori differenti nell'organizzazione con diverse qualifiche (CSS/HTML vs PHP principalmente) di lavorare separatamente e ottenere il loro codice cambia fuori agli ambienti adeguati in fretta senza coinvolgere un gruppo di persone inutili. Hudson mi consente di bloccare diversi lavori di distribuzione in modo che solo le persone giuste abbiano accesso per configurarli e dargli il via.
Questa è una panoramica di alto livello di ciò che ho impostato, fatemi sapere cosa ne pensate. I maggiori fastidi con questa configurazione sono stati keypairs, account utente e autorizzazioni file con rsync su tutti i diversi server.
Dave
Conosco un sacco di gente sta usando Capistrano con railsless-installazioni per la distribuzione WordPress http://theme.fm/2011/08/tutorial-deploying-wordpress-with-capistrano-2082/. Anche se l'ho fatto con successo un paio di volte, non l'ho ancora completamente adottato nel nostro flusso di lavoro. Ritengo che l'utilizzo di Git/GitHub come base per le implementazioni sia decisamente una buona direzione. Un'altra opzione che stiamo esaminando è http://beanstalkapp.com/features/deployments – jeffreynolte