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

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

我现在正在做的是,每个项目都有一个本地测试环境。我在每个项目中都使用SVN;更改将在本地进行测试,然后通常通过FTP转移到在线版本。API文档是从源代码手动生成的;单元测试是我正在慢慢进行的工作,它还不是我日常工作的一部分。

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

  • 在本地进行测试后,变更集将签入SVN。

  • 我开始构建过程。SVN HEAD修订版已签出,必要时进行了修改,并准备上载。

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

  • 新修订版通过FTP部署到远程位置(包括一些目录重命名,chmodding,导入数据库等)。我已经非常喜欢phing了,但是我当然可以选择其他方式。

  • 运行位于预定位置的单元测试。我可以使用电子邮件,RSS或(最好是)HTML输出了解它们的失败或成功,可以将它们捕获并放入网页中。

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

  • 诸如代码指标,代码样式检查之类的东西现在并不是我的主要重点,但从长远来看,它们一定会。开箱即用的解决方案非常值得关注。

我在寻找

  • ,并已成功地为此实施了解决方案

  • 尤其是关于如何进行设置的

  • 提供 解决方案,例如通过为每个新项目创建框架API,测试用例等。

并且

  • 。到目前为止,我所知道的是phing/ant用于构建,而phpUnderControl或Hudson用于报告部分。据我所知,我都喜欢它们,但是我当然对它们没有详细的经验。

忙于

工作,因此非常倾向于简单的解决方案。另一方面,如果缺少某个功能,我会抱怨它太有限。:)也欢迎点击解决方案。我也对可以与PHP项目一起使用的商业产品提出建议。

我在本地Windows(准确地说是7)上工作,大多数客户端项目都在LAMP堆栈上运行,通常在共享主机上运行(=没有远程SSH)。我正在寻找可以在自己的环境中运行的解决方案。我准备为此设置一个Linux

VM,没问题。仅当托管解决方案提供了所描述的所有方面,或者足够灵活以与流程的其他部分进行交互时,托管解决方案才对我而言很有趣。

我接受我认为会给我最大里程的答案。这里有很多很棒的建议,我希望我可以接受多个答案。谢谢大家!

回答:

我经历过buildbot,CruiseControl.net,CruiseControl和Hudson。尽管我真的很喜欢CruiseControl

*,但是对于非常复杂的依赖项来说,这太麻烦了。buildbot的设置并不容易,但是它有一个不错的先兆(我就像python,仅此而已)。但哈德逊赢得了前三名,原因是:

  1. 设置简单
  2. 易于定制
  3. 看起来不错,并具有很好的概述功能
  4. 它本身和所有已安装的插件均获得了点击式更新。这是一个非常不错的功能,我越来越感谢

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

设置哈德逊服务器

先决条件:

  • Java(1.5可以满足您的需要)
  • 对Subversion服务器的读取访问权限(我为hudson用户拥有一个单独的帐户)

从这里开始,只是:

java -jar hudson.war

这将立即在控制台上运行一个小型服务器实例,并且http://localhost:8080如果您事先没有在该端口上运行任何其他操作,则应该可以在您的浏览该安装(您可以通过将--httpPort=ANOTHER_HTTP_PORT选项传递给上面的命令),并且在“安装”过程中一切正常。

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

如果您对此有兴趣,则应该安装Java应用程序服务器,例如tomcat或jetty。安装说明适用于所有主要应用程序服务器

更新:Kohsuke川口构建了一个窗口服务安装哈德森

在哈德森建立一个项目

以下演练中的链接假定​​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构建文件,那么您很幸运。只需选择“调用蚂蚁”并输入目标名称即可。选项组也支持开箱即用的maven和shell命令,但也有一个可用于phing的插件。
  7. 选中“后期构建操作”中的其他构建操作,例如电子邮件通知或构建工件的存档。

要设置hudson没有插件的进程,您可以在构建设置中直接通过Shell脚本调用它们,也可以编写自己的插件

陷阱:

  • 如果您产生了假象,请记住定期对哈德森进行清理。
  • 如果您设置了20个以上的项目,请考虑 不将 其构建状态显示为hudson的默认主页

祝好运!

以上是 为PHP项目设置部署/构建/ CI周期 的全部内容, 来源链接: utcz.com/qa/415193.html

回到顶部