我大部分时间都是一个孤独的开发人员,从事许多大型的、主要是基于 PHP 的项目。我想专业化和自动化处理代码库更改的方式,并创建一个持续集成流程,使过渡到团队工作成为可能,而无需进行根本性更改。
我现在正在做的是,我为每个项目都有一个本地测试环境;我对每个项目都使用 SVN;更改在本地进行测试,然后通常通过 FTP 传输到在线版本。API 文档是从源代码手动生成的;单元测试是我慢慢接触的东西,它还不是我日常生活的一部分。
我设想的“构建周期”将执行以下操作:
在本地测试后,变更集会被签入 SVN。
我开始构建过程。SVN HEAD 修订被检出,如有必要进行修改,并准备好上传。
API 文档会自动生成 - 如果我还没有详细设置它,使用默认模板扫描整个代码库。
新版本通过 FTP 部署到远程位置(包括一些目录重命名、chmodding、导入数据库等。)这是我已经非常喜欢phing的东西,但我当然愿意接受替代方案。
运行驻留在预定义位置的单元测试。我使用电子邮件、RSS 或(最好是)我可以抓取并放入网页的 HTML 输出来了解他们的失败或成功。
(可选)预定义位置中的最终用户“changelog”文本文件使用提交消息的预定义部分进行更新(“现在可以同时过滤“foo”和“bar” time). 该消息不一定与 SVN 提交消息相同,后者可能包含更多的内部信息。
像代码度量、代码风格检查等东西现在不是我的主要关注点,但从长远来看,它们肯定会。开箱即用的解决方案非常受欢迎。
我在寻找
*来自或曾经处于类似情况并已成功实施解决方案的人的 *反馈和经验
特别是关于如何设置它的 良好的分步教程和演练
提供 尽可能多的自动化的 解决方案,例如通过为每个新项目创建骨架 API、测试用例等。
并且
我 忙于 工作,所以我强烈倾向于简单的解决方案。另一方面,如果缺少某个功能,我会因为它太有限而哭泣。:) 也欢迎点击式解决方案。我也推荐可以与 PHP 项目一起使用的商业产品。
我的设置
我在本地(确切地说是 7 个)上工作,大多数客户端项目都在 LAMP 堆栈上运行,通常在共享主机上(= 没有远程 SSH)。我正在寻找可以在自己的环境中运行的解决方案。我准备为此设置一个Linux VM,没问题。只有当托管解决方案提供了所描述的所有方面,或者足够灵活以与流程的其他部分进行交互时,托管解决方案才会对我感兴趣。
赏金 我正在接受我认为会给我最多里程的答案。这里有很多优秀的输入,我希望我能接受多个答案。感谢大家!
我经历过buildbot、CruiseControl.net、CruiseControl和Hudson。尽管我真的很喜欢 CruiseControl*,但对于非常复杂的依赖案例来说实在是太麻烦了。buildbot 设置起来并不容易,但它有一个很好的光环(我就是喜欢 python,仅此而已)。但哈德森赢得了前三名,因为:
警告:我只使用 linux 作为上述构建服务器的基础(CC.net 在mono上运行),但根据文档,它们都应该跨平台运行。
先决条件:
从这里开始,它只是:
java -jar hudson.war
http://localhost:8080这将在您的控制台上运行一个小型服务器实例,如果您事先没有在该端口上运行任何其他东西,您应该能够在您--httpPort=ANOTHER_HTTP_PORT的.以上命令),并且在“安装”过程中一切顺利。
http://localhost:8080
--httpPort=ANOTHER_HTTP_PORT
如果您转到可用的插件目录 ( http://localhost:8080/pluginManager/available),您将找到支持上述任务的插件(默认情况下安装了颠覆支持)。
http://localhost:8080/pluginManager/available
如果这让您胃口大开,您应该安装一个 java 应用程序服务器,例如tomcat或jetty。安装说明适用于所有主要应用服务器
更新 :Kohsuke Kawaguchi为 hudson构建了一个Windows 服务安装程序
以下演练中的链接假定 hudson 的运行实例位于http://localhost:8080
http://localhost:8080/view/All/newJob
Build a free-style software project
*/5 * * * *
对于设置 hudson 没有插件的进程,您可以通过构建设置中的 shell 脚本直接调用它们,或者您可以编写自己的插件
祝你好运!