在CI环境中自动部署PHP(Jenkins)

时间:2014-03-11 09:54:04

标签: php deployment jenkins continuous-integration build-automation

我正在考虑建立一个强大的CI&在一小组开发人员之间共享的项目的部署环境。目标是在测试方式,整体代码质量和部署方式方面实现一致性。

我读过有关Jenkins,Sonar,Maven,Capistrano,Phing,ANT等等的信息......说实话,我迷失在所有这些工具/技术的中间,并希望您验证我的理解并且让我对实现这一目标的最佳方式有所了解。

到目前为止我已经设置了什么:

  • Git :我们使用git作为版本控制系统,并为所有需要CI工具分析的新开发人员提供分支“开发”。
  • Jenkins :Jenkins由GIT钩子(在开发分支上)触发,并执行 PHING 脚本执行以下操作:

    • Lint:验证PHP代码执行,代码分析器
    • PHPLoc:获取一些关于PHP代码的统计信息(复杂性,依赖性......)
    • PDepend:代码分析(不确定与PHPLoc的区别)
    • phpmd:乱七八糟的探测器(未使用的参数,复杂的代码......)
    • phpcpd:检测复制粘贴代码
    • PHPcs:验证编码标准
    • Phpdox:生成PHP文档
    • Php_Codebrowser:生成一个可浏览的PHP代码表示,其中包含违规内容......
    • PHPUnit:运行PHP测试
    詹金斯随后将所有报告/数据发送给Sonar,并指出一名儿子游击手。

  • Sonar 正在收集所有这些数据,并将它们存储在一个数据库中,该数据库提供了一种分析应用程序代码随时间演变的方法。它还以比詹金斯更好的方式显示信息。

缺少块

  • 自动部署到质量检查: 当构建脚本成功时(基于测试成功),我想自动部署到QA env。这应该触发一个在QA上提取正确数据的过程,对DB进行更改,并对潜在的文件/文件夹进行清理。权限设置。
  • 自动部署到PROD :这应该与上面相同,但基于主分支。我们还应该在部署后在该PROD环境中添加另一轮测试。

工具审核

  • Git :无需解释此问题,所有关于版本控制
  • Jenkins :CI工具,可自动构建(代码验证+测试)
  • 声纳:报告工具(随时间可视化构建数据)
  • Maven :对此不确定。它是部署的缺失部分吗?还是其他报告工具?
  • Capistrano :部署工具

您的输入: - )

  • 您对我的CI总体设置的观点(它是否有意义,我使用的是正确的工具吗?)
  • 您的经验是什么是最好的部署工具?
  • 由于Jenkins在整体CI /部署架构中是“调度员”,它是否也是触发部署的?如果是,我认为可以根据构建状态(成功/失败)触发某些操作?

非常感谢您的时间和帮助!

2 个答案:

答案 0 :(得分:5)

整体看起来不错。我没有亲自使用过Sonar(但知道它)或Capistrano(从未听说过这个),所以不能评论那些。

Maven是一个依赖,构建和部署工具,主要用于Java项目。你已经在和Jenkins一起“建立”,所以不要担心Maven。

至于部署,我写了一个非常detailed explanation here如何部署Jenkins构建。 Jenkins完全有能力进行部署,那么为什么还要在混合中添加其他工具呢?您唯一需要的是bash(或批处理,具体取决于您的环境)脚本来获取您的PHP文件(我建议将它们作为构建作业的一部分进行压缩)并将它们复制/部署在远程服务器上。

如果您有更具体的问题,请离开。

答案 1 :(得分:0)

据我所知,有一些自动部署服务,它们更容易配置。因此,例如,它可以集成到Dropbox并自动部署代码以进行repos / live,即使有少数开发人员正在处理它。示例:http://unbouncepages.com/the-magicbox/