你如何管理你的构建[使用Phing]流程?

时间:2010-01-04 10:08:48

标签: php build continuous-integration phing phpundercontrol

我正在尝试使用Phing进行自动化:

  • 运行测试
  • 在每台开发者机器上运行数据库迁移[使用dbdeply]
  • 在需要时部署到生产

我认为在我的项目中添加一个构建文件夹并将所有构建配置文件和db deltas放在该文件夹中是有意义的。并将所有这些提交到SVN存储库中。所以每个开发人员在从svn签出时都会获得更新的构建文件。并且能够运行构建以使用新的更改来更新他的数据库。

生产服务器上的

: 我打算在那里添加另一个构建文件以获取svn中的最新Tagged版本并执行CSS& JS压缩。


我计划使用PHPUnderControl实现持续集成,因此我可以跟踪每个构建的结果,并在构建失败时收到通知。

所以,你觉得这一切都有意义吗,或者你还有其他更好的建议吗?

1 个答案:

答案 0 :(得分:10)

你说的是有道理的:它与我经常使用的(有时使用ant,有时使用phing,有时使用一些shell脚本)非常接近

build目录中,我会这样:

build/
    testing/
    development/
    staging/
    production/
    common/

每个子目录中有一个build.xml文件 - 包括位于build.xml目录中的另一个common文件,其目的是放置尽可能多的“常用”代码可以在“common”build.xml文件中使用,并且包含每个环境特定的文件,其中包含尽可能少的xml代码。

这可以通过phing 的最后一个版本中存在的import任务来完成(不确定它是否在稳定版本中 - 我正在使用SVN检查phing,有这个,对于我目前正在开展的项目)


但有一件事:你说你想从生产服务器部署到生产;我宁愿相反:

  • 在“开发”服务器上:
    • 从SVN导出
    • 压缩JS / CSS以及所有
    • 创建tar.gz存档
  • 将该存档上传到生产服务器
  • 在“生产”服务器上:
    • 取消压缩上传的存档
    • 更改一些符号链接以使用新版本的源代码(请参阅我给出的答案here,了解更多信息)
    • 更新数据库中必须完成的工作

想法是:

  • 在生产服务器上执行尽可能少的操作
    • 万一出现问题
    • 如果有一天,您的生产服务器无法访问SVN服务器
  • 拥有可以部署在多个生产服务器上的物理存档


哦,作为旁注:你必须逐步写出“如何部署到生产”的某种文档!

这在您度假的那天非常有用,而且由于紧急的错误修复,其他人必须部署到生产中; - )