小编典典

为 PHP 项目设置部署/构建/CI 周期

all

我大部分时间都是一个孤独的开发人员,从事许多大型的、主要是基于 PHP
的项目。我想专业化和自动化处理代码库更改的方式,并创建一个持续集成流程,使过渡到团队工作成为可能,而无需进行根本性更改。

我现在正在做的是,我为每个项目都有一个本地测试环境;我对每个项目都使用 SVN;更改在本地进行测试,然后通常通过 FTP 传输到在线版本。API
文档是从源代码手动生成的;单元测试是我慢慢接触的东西,它还不是我日常生活的一部分。

我设想的“构建周期”将执行以下操作:

  • 在本地测试后,变更集会被签入 SVN。

  • 我开始构建过程。SVN HEAD 修订被检出,如有必要进行修改,并准备好上传。

  • API 文档会自动生成 - 如果我还没有详细设置它,使用默认模板扫描整个代码库。

  • 新版本通过 FTP 部署到远程位置(包括一些目录重命名、chmodding、导入数据库等。)这是我已经非常喜欢phing的东西,但我当然愿意接受替代方案。

  • 运行驻留在预定义位置的单元测试。我使用电子邮件、RSS 或(最好是)我可以抓取并放入网页的 HTML 输出来了解他们的失败或成功。

  • (可选)预定义位置中的最终用户“changelog”文本文件使用提交消息的预定义部分进行更新(“现在可以同时过滤“foo”和“bar” time). 该消息不一定与 SVN 提交消息相同,后者可能包含更多的内部信息。

  • 像代码度量、代码风格检查等东西现在不是我的主要关注点,但从长远来看,它们肯定会。开箱即用的解决方案非常受欢迎。

我在寻找

  • *来自或曾经处于类似情况并已成功实施解决方案的人的 *反馈和经验

  • 特别是关于如何设置它的 良好的分步教程和演练

  • 提供 尽可能多的自动化的 解决方案,例如通过为每个新项目创建骨架 API、测试用例等。

并且

  • 产品推荐 。到目前为止,我所知道的是用于构建的phing /ant,以及用于报告部分的phpUnderControlHudson 。就我所见,我都喜欢它们,但我当然没有详细的经验。

忙于 工作,所以我强烈倾向于简单的解决方案。另一方面,如果缺少某个功能,我会因为它太有限而哭泣。:) 也欢迎点击式解决方案。我也推荐可以与 PHP
项目一起使用的商业产品。

我的设置

我在本地(确切地说是 7 个)上工作,大多数客户端项目都在 LAMP 堆栈上运行,通常在共享主机上(= 没有远程
SSH)。我正在寻找可以在自己的环境中运行的解决方案。我准备为此设置一个Linux
VM,没问题。只有当托管解决方案提供了所描述的所有方面,或者足够灵活以与流程的其他部分进行交互时,托管解决方案才会对我感兴趣。

赏金 我正在接受我认为会给我最多里程的答案。这里有很多优秀的输入,我希望我能接受多个答案。感谢大家!


阅读 201

收藏
2022-07-02

共1个答案

小编典典

我经历过buildbotCruiseControl.netCruiseControlHudson。尽管我真的很喜欢 CruiseControl*,但对于非常复杂的依赖案例来说实在是太麻烦了。buildbot
设置起来并不容易,但它有一个很好的光环(我就是喜欢 python,仅此而已)。但哈德森赢得了前三名,因为:

  1. 设置很容易
  2. 很容易定制
  3. 它看起来不错并且有很好的概览功能
  4. 它本身和所有已安装的插件都获得了点击式更新。这是一个非常好的功能,我越来越欣赏

警告:我只使用 linux 作为上述构建服务器的基础(CC.netmono上运行),但根据文档,它们都应该跨平台运行。

设置哈德逊服务器

先决条件:

  • Java(1.5 会很好地为您服务)
  • 对 subversion 服务器的读取权限(我有一个单独的 hudson 用户帐户)

从这里开始,它只是:

java -jar hudson.war

http://localhost:8080这将在您的控制台上运行一个小型服务器实例,如果您事先没有在该端口上运行任何其他东西,您应该能够在您--httpPort=ANOTHER_HTTP_PORT的.以上命令),并且在“安装”过程中一切顺利。

如果您转到可用的插件目录 (
http://localhost:8080/pluginManager/available),您将找到支持上述任务的插件(默认情况下安装了颠覆支持)。

如果这让您胃口大开,您应该安装一个 java
应用程序服务器,例如tomcatjetty安装说明适用于所有主要应用服务器

更新Kohsuke Kawaguchi
hudson构建了一个Windows 服务安装程序

在哈德逊建立一个项目

以下演练中的链接假定​​ hudson 的运行实例位于http://localhost:8080

  1. http://localhost:8080/view/All/newJob从左侧菜单中选择新作业 ( )
  2. 给工作起个名字Build a free-style software project并在清单上打勾
  3. 按“确定”将带您进入作业的配置页面。除了它们之外,所有选项都有一个小问号。按此将显示有关该选项的帮助文本。
  4. 在选项组“源代码管理”下,您将使用 Subversion。Hudson 接受 url 访问和本地模块访问
  5. 在选项组“构建触发器”下,您将使用“轮询 SCM”。这里使用的语法是 cron 的,所以每 5 分钟轮询一次 subversion 存储库将是*/5 * * * *
  6. 构建项目的过程在选项组“构建”下指定。如果您已经有一个包含所有您需要的目标的 ant 构建文件,那么您很幸运。只需选择“Invoke ant”并写下目标的名称。选项组也支持开箱即用的 maven 和 shell 命令,但也有一个可用于 phing 的插件
  7. 在“构建后操作”中勾选其他构建操作,例如电子邮件通知或构建工件的存档。

对于设置 hudson 没有插件的进程,您可以通过构建设置中的 shell
脚本直接调用它们,或者您可以编写自己的插件

陷阱:

  • 如果你让它产生构建人工制品,请记住让 hudson 定期清理自己。
  • 如果您设置了 20 多个项目,请考虑 将其构建状态显示为 hudson 上的默认主页

祝你好运!

2022-07-02