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

我现在做的是,我 for each 项目都有一个本地测试环境;我 for each 项目使用SVN;更改会在本地进行测试,然后通常通过FTP传输到在线版本.API文档是从源代码手动生成的;单元测试是我慢慢开始做的事情,它还不是我日常工作的一部分.

我设想的"构建周期"将实现以下功能:

  • 变更集在本地测试后签入到SVN中.

  • 我开始构建过程.SVN HEAD修订版将被签出,必要时进行修改,并准备好上载.

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

  • 新版本通过FTP部署到远程位置(包括一些目录重命名、chmodding、导入数据库等).这是我已经非常喜欢phing美元的东西,但我当然对其他 Select 持开放态度.

  • 运行驻留在预定义位置的单元测试.我通过邮箱、RSS或(最好是)HTML输出得知他们的失败或成功,我可以抓取这些输出并将其放入网页中.

  • (可选地)使用提交消息的预定义部分来更新预定义位置中的终端用户"ChangeLog"文本文件("现在可以同时为"foo"和"bar"发过滤).该消息不一定与svn提交消息相同,后者可能包含更多的内部信息.

  • 代码度量、代码风格判断等不是我目前的主要关注点,但从长远来看,它们肯定会成为我的主要关注点.我们非常友好地看待能够将这一点付诸实施的解决方案.

我在找

  • Feedback and experiences个来自现在或曾经处于类似情况的人,并成功地实施了针对此问题的解决方案

  • 特别是关于如何设置的good step-by-step tutorials and walkthroughs

  • 解决方案提供as much automation as possible个,例如 for each 新项目创建一个框架API、测试用例等等.

而且

  • Product recommendations.到目前为止,我所知道的是phing/ant用于建筑,phpUnderControlHudson用于报告部分.就我所能看到的而言,我都喜欢它们,但我对它们当然没有详细的经验.

我有swamped岁的工作经验,所以我很喜欢简单的解决方案.另一方面,如果一个特性丢失了,我会抱怨它太有限了.:)点击式解决方案也是受欢迎的.我也是商业产品的推荐,可以与PHP项目一起工作.

My setup

I am working on Windows locally (7, to be exact) and most client projects are run on a LAMP stack, often on shared hosting (= no remote SSH). 我在找 solutions that I can run in my own environment. I am ready to set up a Linux VM for this, no problem. Hosted solutions are interesting for me only if they provide all of the aspects described, or are flexible enough to interact with the other parts of the process.

Bounty

推荐答案

我经历了buildbotCruiseControl.netCruiseControlHudson次.尽管我真的很喜欢CruiseControl*,但对于非常复杂的依赖性 case 来说,这实在是太麻烦了.buildbot不容易设置,但它有一个很好的氛围(我只是喜欢python,仅此而已).但哈德逊击败前三名是因为:

  1. 它只是很容易设置
  2. 它很容易定制
  3. 它看起来不错,并且有很好的概述功能
  4. 它为自己和所有安装的插件提供了点击式更新.这是一个非常好的功能,我越来越欣赏它

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

Setting up a hudson server

先决条件:

  • Java(1.5版正好可以满足您的需求)
  • 对subversion服务器的读取权限(我为hudson用户提供了一个单独的帐户)

从这里开始,它只是:

java -jar hudson.war

这将在你的控制台上运行一个小型服务器实例,如果你事先没有在该端口上运行其他任何东西(你可以通过向上面的命令传递--httpPort=ANOTHER_HTTP_PORT选项来指定另一个端口),并且在"安装"过程中一切顺利,你应该能够在http://localhost:8080上浏览安装.

如果你转到available plugins目录(http://localhost:8080/pluginManager/available),你会找到支持上述任务的插件(默认情况下会安装subversion支持).

如果这激起了你的兴趣,你应该安装一个java应用服务器,比如tomcatjetty.Installation instructions适用于所有主要应用服务器

Update:Kohsuke Kawaguchi已经为哈德森建造了一个windows service installer

Setting up a project in hudson

下面的演练中的链接假设哈德逊的一个运行实例位于http://localhost:8080

  1. 从左侧菜单中 Select new Job(http://localhost:8080/view/All/newJob)
  2. 为作业(job)命名,并在列表中勾选Build a free-style software project
  3. 按"确定"将进入作业(job)的配置页面.除此之外,所有选项都有一个小问号.按此键将显示有关该选项的帮助文本.
  4. 在选项组"源代码管理"下,您将使用Subversion.Hudson既接受url访问,也接受本地模块访问
  5. 在选项组"Build Triggers"下,可以使用"Poll SCM".这里使用的语法是cron语法,因此每5分钟轮询subversion存储库一次将是*/5 * * * *
  6. 在选项组"Build"下指定了构建项目的过程.如果你已经有了一个包含所有目标的ant构建文件,那么你就很幸运了.只需 Select "Invoke ant"并写下目标的名称.选项组也支持maven和shell命令,但也有一个plugin available for phing.
  7. 在"构建后操作"中勾选其他构建操作,例如邮箱通知或构建工件的存档.

要设置Hudson没有插件的进程,您可以从构建设置中通过shell脚本直接调用它们,也可以write you own plugin

Pitfalls:

  • 如果你让它制作人工制品,记得让哈德逊定期清理.
  • 如果您设置了20个以上的项目,可以考虑将not个项目的构建状态显示为Hudson上的默认主页

祝你好运

Php相关问答推荐

条纹 checkout :订阅试用版和额外付款(add_invoice_items)错误

如何在Woocommerce中禁用机器人添加到推车?

在特定订单状态更改时自定义WooCommerce订单发货项目

在WooCommerce产品中按类型对产品属性术语进行分类以供显示

Laveel Livewire Get Groupby姓名列表

在Laravel Eloquent中实现一对多关系

将一个情态形式放在细丝v3中的形式中间

根据WooCommerce购物车页面中的自定义 Select 添加费用

Chillerlan/php-iOS名称字段的QR vCard错误

创建一个Woocommerce我的帐户订单页面,仅显示已完成的订单

带Redhat php curl的http_code 0

HTAccess重写一些URL,但将所有其他URL发送到另一个页面

未收到Strava WebHook事件数据

Laravel 10.x在到达控制器之前将查询参数强制转换为正确的类型

按日期向 WooCommerce 中的我的帐户订单添加过滤器

如何为自定义帖子类型的自定义角色提供功能

Woocommerce单个添加到购物车页面中的产品动态定价

Symfony 迁移判断器在我的工作中失控

是否有适用于 Windows 的真正 64 位版本的 PHP 5.6?

为什么可以从 PHP 类访问 PHP Trait 的私有成员?