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


Automated deployment PHP in CI environment (Jenkins)

我目前正在考虑建立一个强大的CI &跨小型开发团队共享的项目的部署环境。目标是在测试方式、整体代码质量和部署方式上保持一致性。

我读过Jenkins, Sonar, Maven, Capistrano, Phing, ANT,…老实说,我在所有这些工具/技术中迷失了方向,希望您能验证我的理解,并给我一些实现这一目标的最佳方法的见解。

我已经设置到现在:

  • Git:我们使用Git作为版本管理系统,并为所有需要CI工具分析的新开发提供一个分支"开发"。
  • Jenkins: Jenkins由GIT钩子(在开发分支上)触发,并将执行PHING脚本执行以下操作:

    • Lint:验证PHP代码执行,代码分析器
    • PHPLoc:获取一些关于PHP代码的统计信息(复杂性,依赖性等)
  • PDepend:代码分析(不确定与PHPLoc的区别)
  • phpmd:混乱检测器(未使用的参数,复杂的代码…)
  • phpcpd:检测复制粘贴代码
  • PHPcs: validate coding standards
  • Phpdox:生成PHP文档
  • Php_Codebrowser:生成一个可浏览的PHP代码表示,并突出显示违规…PHPUnit:运行PHP测试

Jenkins然后使用声纳运行器将所有报告/数据发送给声纳。

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

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

    工具检查

    • Git:不需要解释这个,这都是关于版本控制的
    • Jenkins: CI工具,用于自动构建(代码验证+测试)
    • Sonar:报告工具(随时间可视化构建数据)
    • Maven:不确定这个。它是部署中缺失的部分吗?或者其他报告工具?
    • Capistrano:部署工具

    您的输入:-)

    • 你对我的CI整体设置的看法(有意义吗,我使用了正确的工具吗?)
    • 根据您的经验,部署的最佳工具是什么?
    • 詹金斯是一种"调度"在这个整体CI/部署模式是触发部署也吗?如果是,我认为有可能触发一些基于构建状态的行动(成功/失败)?
    非常感谢你的时间和帮助!

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

    Maven是一个依赖、构建和部署工具,主要用于Java项目。你已经在用Jenkins处理"构建"了,所以不用担心Maven。

    至于部署,我在这里写了一个非常详细的解释如何部署Jenkins构建。Jenkins完全有能力完成你的部署,所以为什么要费心去添加另一个工具呢?您唯一需要的是一个bash(或批处理,取决于您的环境)脚本来获取PHP文件(我建议将它们作为构建作业的一部分进行压缩),并将它们复制/部署到远程服务器上。

    如果你有更具体的问题,请直接问。

    据我所知,有一些用于自动部署的服务,它们更容易配置。例如,它可以集成到Dropbox并自动部署代码到repos/live,即使有几个开发人员正在开发它。例如:http://unbouncepages.com/the-magicbox/