当前位置: 首页 > 面试题库 >

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

东门彬
2023-03-14
问题内容

我大部分时间都是孤独的开发人员,从事许多大型的,主要基于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的默认主页

祝好运!



 类似资料:
  • 我使用CocoaPods来管理项目中的依赖关系。我写过Podfile: 这个文件在CocoaPods 0.x上运行良好,但是在我升级到CocoaPods 1.0后,我无法编译project。在我跑完之后 我无法用错误编译我的项目: /用户/ 我发现每个库都有不同的部署目标。例如,KeepLayout是用4.3部署目标构建的。 如何确定每个 Pod 依赖项的构建目标?

  • 问题内容: 有没有在Eclipse的方式来设置或通过项目的情况下的一个项目?通常,这些设置引用当前工作空间的所有项目。我可以得到的距离越近,但这又又指的是构建的顺序。 问题答案: 不,这是设计无法实现的。我引用了关于同一主题的较早讨论: “我们认为在工作空间的一部分上具有自动构建的模式混淆了自动构建的概念,这目前意味着用户不需要了解构建。我们的想法是,使用新的工作集构建,您可以为其添加密钥绑定(或

  • 2. 项目部署 本章主要介绍如何部署Camel。 首先,介绍Vagrant这个虚拟机工具。借助Vagrant,我们可以保证本地开发及测试环境与线上环境的一致。 随后介绍slb-admin的部署。管理端本地也要安装Dengine,用以测试Nginx配置文件的语法是否正确。此外,还需要部署数据库:MySQL及MongoDB。 最后介绍Nginx服务器的部署。我们可以根据具体需求部署Nginx集群,每台

  • 描述 本文档提供了 3 种部署方式,对应 Jboot 里的 3 种打包方式。 通过 脚本 运行 在 打包方式 文档中,我们可以把项目打包成一个 .zip 的压缩包项目,里面带有 jboot.sh (和 jboot.bat) 执行脚本, 只需要我们解压 .zip 压缩文件,通过如下命令就可以对 jboot 项目进行启动和停止。 # 启动 ./jboot.sh start # 停止 ./jboot.

  • 部署中,你可以先构建打包生成环境代码,再启动服务。因此,构建和启动分为下面两条命令: next build next start 例如,使用now去部署package.json配置文件如下: { "name": "my-app", "dependencies": { "next": "latest" }, "scripts": { "dev": "next",

  • 构建配置说明 开发者可以在  build.json 中配置不同的配置参数来改变项目的构建方式,具体配置参数如下: 属性 类型 默认值 描述 turnOffSourceMap boolean false 是否开启 sourceMap(目前支付宝 IDE 存在不准确的情况) constantDir string/array src/constant 静态资源(只能放在 src 目录下) disable