在 CI 环境中自动部署 PHP (Jenkins)
我目前正在考虑为一个小开发团队共享的项目建立一个强大的CI和部署环境。目标是在测试方式、整体代码质量和部署方式方面实现一些一致性。
我读过关于詹金斯,声纳,Maven,Capistrano,Phing,ANT,...说实话,我在所有这些工具/技术中迷失了方向,希望您验证我的理解,并就实现这一目标的最佳方法给我一些见解。
到目前为止,我已经设置了什么:
- Git:我们使用 git 作为版本控制系统,并为需要 CI 工具分析的所有新开发提供分支“开发”。
-
Jenkins:Jenkins 由 GIT 钩子(在开发分支上)触发,并将执行 PHING 脚本执行以下操作:
- Lint:验证PHP代码执行,代码分析仪
- PHPLoc:获取有关PHP代码的一些统计信息(复杂性,depedency..)
- PDepend:代码分析(不确定与PHPLoc的区别)
- phpmd:混乱探测器(未使用的参数,复杂的代码...)
- phpcpd:检测复制粘贴代码
- PHPcs:验证编码标准
- Phpdox:生成 PHP 文档
- Php_Codebrowser:生成 PHP 代码的可浏览表示形式,其中包含违规突出显示...
- PHPUnit:运行 PHP 测试
然后,Jenkins将所有报告/数据发送到Sonar,并解耦sonnar-runner。
Sonar正在收集所有这些数据,将它们存储在数据库中,该数据库提供了一种分析应用程序代码随时间变化的方法。它还以比 Jenkins 更好的方式显示信息。
缺少块
- 自动部署到 QA:我想在构建脚本成功时自动部署到 QA env(基于测试成功)。这应该触发在QA上提取正确数据的过程,对数据库进行更改,以及潜在的文件/文件夹清理和权限设置。
- 自动部署到 PROD:这应该与上述操作相同,但基于主分支。我们还应该在部署后对该 PROD 环境添加另一轮测试。
工具回顾
- Git:无需解释这个,这一切都与版本控制有关
- Jenkins:CI工具,可自动执行构建(代码验证+测试)
- 声纳:报告工具(可视化随时间变化的构建数据)
- Maven:不确定这个。它是部署中缺少的部分吗?还是其他报告工具?
- Capistrano: deployment tool
您的输入:-)
- 你对我对CI的整体设置的看法(这有意义吗,我是否使用了正确的工具?
- 根据你的经验,什么是最好的部署工具?
- 由于 Jenkins 是整个 CI/部署架构中的“调度员”,它是否也是触发部署的架构?如果是,我假设可以根据构建状态(成功/失败)触发一些操作?
非常感谢您的时间和帮助!