2010-05-24 97 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仓库,然后每个人都将拥有最新仓库)。