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

LEM*_*M01 20 php deployment build-automation continuous-integration jenkins

我目前正在考虑为一个小型开发团队共享的项目建立一个强大的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测试

    Jenkins随后将所有报告/数据发送给Sonar unsing a sonnar-runner.

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

缺少块

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

工具评论

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

你的输入:-)

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

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

Sla*_*lav 5

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

Maven是一个依赖,构建和部署工具,主要用于Java项目.你已经在和詹金斯一起"建立",所以不要担心Maven.

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

如果您有更具体的问题,请随便提出.