2010-05-24 101 views
12

有沒有人曾與不同地點的多個開發人員一起開發WordPress項目?是否有圍繞分佈式開發團隊和自動化部署的最佳實踐?自動化Wordpress開發和部署

我有一個不同程度的開發人員團隊,包括插件開發人員,主題開發人員,以及簡單的CSS樣式調整程序,在幾個不同的位置,我想爲每個人都設置一個好的系統,以便能夠在他們各自獨立的部分,不斷調整變更而不影響其他人的代碼。

系統目前正在運行WordPress-MU的安裝,它最終會升級到3.0。理想情況下,我們會將主題和插件存儲在源代碼控制中,並且由於對核心WordPress代碼進行了一些修改,它也必須進入存儲庫。我無法找出構建存儲庫的最佳方法,並進行可控但部分自動化的部署。

當不同類型的插件和主題可能將配置存儲在文件系統或數據庫中時,如何處理和部署到開發,測試,臨時和生產環境中?我知道答案可能是「不使用WordPress,」但假設我必須這樣做,讓我知道你在想什麼,

感謝您的幫助,

戴夫

+0

我認識了一幫鄉親使用Capistrano的與railsless的部署部署WordPress的http://theme.fm/2011/08/tutorial-deploying-wordpress-with-capistrano-2082/。儘管我已經成功完成了幾次,但仍未完全將其應用到我們的工作流程中。我覺得使用Git/GitHub作爲部署的基礎絕對是一個好方向。我們正在研究的另一個選項是http://beanstalkapp.com/features/deployments – jeffreynolte 2012-10-26 04:54:08

回答

9

這裏是我結束瞭解決這一問題至今:

源代碼目錄:

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

我使用哈德森CI服務器(http://hudson-ci.org/)以自動化和使用Subversion結賬任務手動構建,phing和phpunit等等......基本上,Hudson服務器根據你想要部署的內容從Subversion提取代碼,它是從CI服務器部署到目標服務器的rsync文件。

或者,對於從分段直接到生產的部署,Hudson rsync將文件從分段,到CI服務器,然後備份到生產。

我建立哈德森就業設置以下的功能塊:

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 

哈德森工作也紛紛部署環境的具體PHP文件的能力(如WP-config.php文件,DB-配置。 php)以及Apache和MySQL配置文件到每個服務器上的適當位置。在某些情況下,我們將部署到多個Web服務器和多個數據庫服務器,並且通過phing構建文件和上面提到的.properties文件來處理大部分構建配置。未來,當我們有一個開發集成環境時,我們可能會在svn簽入任何代碼時進行自動部署。

該設置允許具有不同技能組織的不同開發人員(主要是CSS/HTML vs. PHP)獨立工作,並快速將代碼更改到正確的環境,而不涉及大量不必要的人員。 Hudson允許我鎖定不同的部署工作,以便只有合適的人才有權配置它們並啓動它們。

這是我設置的高級別概述,讓我知道你的想法。使用此設置最大的煩惱是在所有不同的服務器上使用rsync的密鑰對,用戶帳戶和文件權限。

戴夫

+0

對那個神祕的「測試/」文件夾有好奇。你如何爲你的Wordpress插件和主題配置自動測試?我剛剛花了幾個小時來討論Wordpress自動測試套件,但它似乎是一個相當大的挑戰,以便我可以針對自己的插件和主題運行測試代碼。 – jsdalton 2010-10-29 21:22:54

+1

我在wp測試套件中遇到了很多麻煩,所以我們對編寫針對我們的插件和主題的PHPUnit測試停滯不前。當我們將博客從MT服務器遷移到WP時,我們能夠編寫像301重定向這樣的單元測試,並且迄今爲止效果很好。 – 2010-11-03 01:30:07

0

對於我們使用的文件系統GIT,它工作得很好。您可以爲每個團隊成員分配一個分支,然後將其合併到生產分支中。我們可以保持我們的代碼集成,避免任何麻煩。

對於數據庫,我一直傾銷prod數據庫並與大家共享(您甚至可以將其發送到GIT倉庫,然後每個人都將擁有最新倉庫)。