【问题标题】:Automated deployment PHP in CI environment (Jenkins)CI环境中的自动部署PHP(Jenkins)
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    如果您有更具体的问题,请尽管提问。

    【讨论】:

    • 知道项目相当繁重并且我正在使用 GIT,我宁愿使用一些 git 命令来部署它。基本上我想要实现的是通过 Jenkins 触发(根据你上面提到的)一个脚本(phing/capistrano 还不确定),它将 ssh 到我的 QA 服务器,git pull,做一些 cp,作曲家更新,执行一些命令(symfony 控制台命令),可能会备份数据库并执行一些 db update 命令。尚不确定 Phing/capistrano 是否允许我这样做,但如果我可以将这个设置与你提到的 Jenkins 插件一起完成,它会摇滚!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    相关资源
    最近更新 更多