-->

设置为PHP项目部署/编译/ CI周期设置为PHP项目部署/编译/ CI周期(Setting up

2019-05-09 01:17发布

我是一个孤独的开发者我的大部分时间,对一些大的,主要是基于PHP项目的工作。 我想专业化和自动化如何更改代码库进行处理,并创建一个持续集成的过程,使得在一个团队可以工作,而无需做出根本性的变化的过渡。

我在做什么现在的问题是,我对每一个项目的本地测试环境。 我使用SVN每个项目; 更改本地测试,然后转移到上线的版本,通常通过FTP。 API文档从源代码手动生成; 单元测试是什么我进入慢,这是没有我的日常工作的一部分。

“建设周期”我预想会做到以下几点:

  • 一个修改被已被本地测试之后检查到SVN。

  • 我开始构建过程。 该SVN HEAD版本的检出,如果有必要修改,并准备上传。

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

  • 新修订通过FTP部署到远程位置(包括一些目录重命名,chmodding,导入数据库,和喜欢。)这是我已经喜欢phing非常多,但我很开放的,当然选择。

  • 居住在预定位置的单元测试运行。 我被告知有关使用电子邮件,RSS或(最好)HTML输出,我可以抓住并投入网页的失败或成功。

  • (任选地)一个最终用户在一个预定义的位置“更改日志”的文本文件获取与提交消息的一个预先定义的部分被更新(“现在是可能的筛选既‘foo’和‘棒’的同时时间),与SVN提交消息,这可能包含更多的内部信息该消息不一定是相同的。

  • 像代码度量代码风格检查等东西都不是我的主要焦点,现在,但长远来看,他们肯定会的。 带来这出的现成的解决方案是很慈祥的看着时。

我在寻找

  • 反馈和经验的人谁是或曾经在类似的情况,并已成功地实施了一个解决方案

  • 特别是很好的一步一步的教程和演练如何设置此

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

并且

  • 产品推荐 。 我所知道的,到目前为止是phing /蚂蚁的建设, phpUnderControl或哈德森为报告部分。 我都喜欢,据我所看到的,但我当然与他们没有细致的体验。

泛滥成灾的工作,所以我必须对简单的解决方案强大的倾向。 在另一方面,如果一个功能缺失,我会哭泣它是太有限了。 :)点和点击的解决方案,欢迎了。 我也到商业产品的建议可以用PHP项目。

我的设置

我工作在Windows本地(7,要准确),大多数的客户项目上的LAMP堆栈上运行,往往在共享主机(=没有远程SSH)。 我找的,我可以在自己的环境中运行的解决方案。 我准备建立一个Linux VM对于这一点,没有任何问题。 只要他们提供所描述的所有方面,或有足够的灵活性,以与过程的其他部分进行交互托管解决方案是对我有意思。

赏金我接受,我觉得会给我最里程答案。 有很多优秀的投入在这里,我希望我能接受一个以上的答案。 感谢大家!

Answer 1:

我经历过buildbot , CruiseControl.net , CruiseControl的和哈德森 。 所有虽然我真的很喜欢CruiseControl的*,这只是太有非常复杂的依赖关系的情况下麻烦了。 buildbot不容易建立,但它有一个很好的光环(我只是喜欢蟒蛇,这是所有)。 但是哈德森赢得了前三种原因:

  1. 这只是容易成立
  2. 这很容易定制
  3. 它看起来不错,得到了很好的概述功能
  4. 它得到了指向和点击更新,自身和所有已安装的插件。 这是一个非常不错的功能,我就欣赏更多

警告:我只用过Linux作为基础上述构建服务器(CC.net跑单 ),但他们都应该-根据文档-跨平台运行。

建立一个哈德森服务器

先决条件:

  • 爪哇(1.5将竭诚为您服务就好了)
  • 读访问Subversion服务器(我对哈德森用户一个单独的帐户)

从这里,它只是:

java -jar hudson.war

这将运行一个小的服务器实例马上你的控制台,你应该能够浏览安装在您http://localhost:8080 ,如果你没有别的事先在该端口上运行(可以指定另一个通过将端口--httpPort=ANOTHER_HTTP_PORT选项于上述命令)和一切在“安装”过程顺利。

如果你去到可用的插件目录( http://localhost:8080/pluginManager/available ),你会发现支持您的上述任务的插件(颠覆支持每默认安装)。

如果有激起你的食欲,你应该安装Java应用程序服务器,如Tomcat的或码头 。 安装说明适用于所有主要的应用服务器

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

建立在哈德逊项目

在下面的步行通过该链接假定位于哈德逊的运行实例http://localhost:8080

  1. 选择新的工作( http://localhost:8080/view/All/newJob )从左边的菜单
  2. 提供作业名称,并勾选Build a free-style software project名单
  3. 按“确定”将带你到作业的配置页面。 所有选项都有,除了他们一点点的问号。 按这将带来一些有关这个选项帮助文本。
  4. 在选项组“源代码管理”你会使用Subversion。 哈德森同时接受访问的网址以及本地模块访问
  5. 在选项组“构建触发器”,你可以使用“投票SCM”。 这里使用的语法是cron的,所以轮询Subversion版本库,每5分钟将*/5 * * * *
  6. 建设项目的过程选项组“构建”下指定。 如果你已经拥有你需要的所有目标的Ant构建文件,你很幸运。 只要选择“调用Ant”和写入目标的名称。 选项组支持Maven和shell命令以及开箱即用,但也有一个可供phing插件 。
  7. 勾选中“后生成操作”的附加构建行动,如电子邮件通知或建立文物的归档。

有关设置流程,其中哈德森没有插件,您可以直接从构建安装程序中调用它们通过一个shell脚本,或者你也可以写你自己的插件

陷阱:

  • 如果您有它产生建立文物,记得有哈德森清理后本身的定期。
  • 如果你有超过20个项目设立, 考虑作为显示哈德森默认主页的构建状态

祝好运!



Answer 2:

你正在寻找的术语是“持续集成”。

这里是谁使用GIT + phpundercontrol别人的例子: http://maff.ailoo.net/2009/09/continuous-integration-phpundercontrol-git/

CruiseControl的(这是一个CI服务器),可以使用托管SVN / GIT作为源。 所以,你甚至可以GitHub的使用它,或者青苗或别的东西。

然后,你可以整合与以下类型的软件:

  • PHPUnit的
  • PHP-codesniffer
  • phpDocumentor的
  • PHP的gcov
  • PHPXref
  • Yasca
  • 等等

你也可以试试这个托管CI: http://www.php-ci.net/hosting/create-project

但请记住,这些工具需要定制支持,如果你自己融入其中。

你也想过项目管理和补丁管理?

您可以使用管理平台进行项目管理。 它集成了持续集成的支持,但仅作为客户端(不作为CI服务器)。

尝试使用托管SVN / GIT /等。 解决方案,因为他们将覆盖你的备份和保持他们的服务器上运行,这样你就可以专注于发展。

有关如何安装哈德森的教程,请参阅: http://toptopic.wordpress.com/2009/02/26/php-and-hudson/



Answer 3:

我使用Atlassian的竹持续集成服务器,我的主要PHP项目(与他们的其他产品一起,如鱼眼 (库浏览), JIRA (问题跟踪)和三叶草 (代码覆盖率))。

它支持SVN,现在支持Git和它有一个很大的用户界面。 它可用于Linux,Windows和Mac并可这是伟大的人(像我)谁不喜欢需要数天才能建立自己的工具),它自己的Tomcat服务器上运行的独立。 尽管它可能看起来昂贵,是孤独的开发人员自己,我购买的入门套件许可证$ 10(10 $通过软件)。 这是伟大的小团队,这是值得的样子。



Answer 4:

PHPTesting PHPCI这是一个建立在PHP不错,持续集成服务器。

此外,其自由和开放源码。 :)

它具有插件的数量..

PHPCI包括集成插件:

  • Atoum
  • 贝哈特
  • 营火
  • Codeception
  • 作曲家
  • 电子邮件
  • 咕噜
  • IRC
  • PHP
  • 皮棉
  • MySQL的
  • PDepend
  • PostgreSQL的
  • PHP代码嗅探器
  • PHP复制/粘贴探测器
  • PHP规格
  • PHP单位
  • Shell命令
  • 焦油/ ZIP


Answer 5:

我主要是一个系统管理员,但有时我的代码PHP也是如此。 作为一个方面的项目,我创建了一些脚本,这将使它简单和方便使用詹金斯建立一个完全成熟的PHP CI环境。 它还可以运行示例项目给你,让你可以看到每个构建步骤是如何配置的。

如果你想尝试一下你需要的是一个Debian / Ubuntu的框和shell访问。

http://yauh.de/articles/379/setting-up-a-ci-environment-for-php-projects-using-jenkins-ci

更新一些内容添加到我的回答:

您可以使用Ansible只需设置一个詹金斯CI为PHP。 由于V1.4支持,你可以从他们的galaxy.ansibleworks.com社区网站下载的角色,它会做繁重的你。 这就是所谓的詹金斯的PHP 。



Answer 6:

我会建议使用詹金斯http://jenkins-ci.org/它是免费的,它是开源的。

这是非常简单的设置,适用于多个平台,并与其他持续集成工具,如SonarQube(+ SQUALE)很好地集成测量技术债务和修昔底德的自动化测试。

我会强烈建议使用GIT或集线器GIT版本控制,而不是SVN。 从我的角度来看,它只是一个更好的版本控制系统,这将有助于你以后扩展您的开发工作。

既然你大多用PHP项目的工作也有可以使用一些其他的工具。

PHPUnit的 - 对于单元测试

PHP CodeSniffer - 检查编码标准

PHP依靠 - 显示你的PHP代码的依赖

Xdebug的 - 对于性能测试

所有这些工具并用詹金斯任务被触发,并与您的代码的质量和性能有帮助。

祝你好运和享受!



Answer 7:

我不使用的产品很多,甚至类型的,你使用的产品,但我会给你我的经验。

我运行parrallel一个测试环境,我PROD环境。 我本身没有本地测试。 如果实在是太难以得到soemthing成一个真实的测试环境,那么我解决我的构建过程。 我看不出在本地测试点,因为环境是不同的。 更新:我在本地做的唯一的事情之前,我上传任何运行“PHP -l”。 停止愚蠢的错误。

构建过程的工作原理与无论是在当前工作空间中,其中包括未提交的代码。 这不是茶,每个人的杯子,但我会经常检验。 一切都得到才去督促承诺。

我的构建过程(类似于你)的一部分,创建两个META文件。 一个包含的最后一个(典型值)100度的变化也给了我当前的变更表号。 该显示我安装了什么样的变化。 另含有这说明我到底是什么树枝被在此版本中使用的CLIENTSPEC(在Perforce中的术语)。 总之,这些给我重现的构建。

我不建直奔目标环境,但在服务器上的临时区域。 我用SSH所以这是有道理的。 这给了我一些优势。 更重要的是它避免了死亡经过大量上传一半。 这也给我来存储元文件的地方,所有的生成文件的自动存档(这样我就可以直奔回任何版本)。 该脚本还记录更新(所以日志流中的条目,我可以看到前置和后置)和踢所有的守护程序(我用的daemontools如此“SVC -t”)。 所有这些都是在目标机器上更好。

另外一个问题是DB的变化。 我把DB模式,这是我更新每次架构更改的主脚本。 每变化也进入一个changes.sql脚本,该脚本上传与构建的临时区域。 该脚本运行的安装脚本的一部分。



Answer 8:

我最近开始同一种工艺,并且正在使用青苗为SVN托管。

有在付费账户2个漂亮的功能(开始于$ 15pm我认为):

  • 部署允许用户创建分期和生产服务器,它可以在一个点击按钮来部署FTP目标(INC指定修订和分支)
  • 网络挂接允许用户建立一个名为每次提交/部署的URL,横跨东西像传递版本号,描述和用户。 这可以用来更新文档,运行单元测试和更新更改日志。

我敢肯定有这两个特征的其他托管或自托管SVN服务器,但魔豆是一个我的经验,它的工作非常,非常好

还有一个API,这是我想象可以用来部署进一步整合到你的进程。



Answer 9:

考虑fazend.com ,一个免费托管CI平台,它能够自动配置和安装程序。 你并不需要设置版本控制,缺陷跟踪,CI服务器,测试环境等,一切都按需求进行。



文章来源: Setting up a deployment / build / CI cycle for PHP projects