【发布时间】:2014-04-14 20:27:20
【问题描述】:
我目前正在考虑为一个由一小部分开发人员团队共享的项目建立一个强大的 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,而不是 sonar-runner。
Sonar 正在收集所有这些数据,并将它们存储在数据库中,该数据库提供了一种分析应用程序代码随时间演变的方法。它还以比 Jenkins 更好的方式显示信息。
缺少块
- 自动部署到 QA: 当构建脚本成功(基于测试成功)时,我想自动部署到 QA 环境。这应该会触发在 QA 上提取正确数据、对数据库进行更改以及潜在的文件/文件夹清理和权限设置的过程。
- 自动部署到 PROD:这应该与上述相同,但基于 master 分支。我们还应该在部署后对该 PROD 环境添加另一轮测试。
工具评论
- Git:这个不用解释了,都是版本控制
- Jenkins:CI 工具,可自动构建(代码验证 + 测试)
- 声纳:报告工具(随着时间的推移可视化构建数据)
- Maven:不确定这个。它是部署的缺失部分吗?还是其他报告工具?
- Capistrano:部署工具
您的意见 :-)
- 您对我的 CI 整体设置的看法(有意义吗,我是否使用了正确的工具?)
- 根据您的经验,最好的部署工具是什么?
- 由于 Jenkins 是整个 CI/部署模式中的“调度员”,它是否也触发了部署?如果是,我认为可以根据构建状态(成功/失败)触发一些操作?
非常感谢您的宝贵时间和帮助!
【问题讨论】:
-
我目前正在寻找与您所做的类似的事情。您是否碰巧遵循了某种教程?我被困在如何让詹金斯使用 php(magento) 网站
标签: php deployment jenkins continuous-integration build-automation