【发布时间】:2010-04-07 08:19:59
【问题描述】:
是否有任何用于 Delphi 的 CI 系统,例如用于 Java 的 Hudson? Hudson 有任何 Delphi 集成吗?
【问题讨论】:
标签: delphi continuous-integration
是否有任何用于 Delphi 的 CI 系统,例如用于 Java 的 Hudson? Hudson 有任何 Delphi 集成吗?
【问题讨论】:
标签: delphi continuous-integration
我们使用jenkins。 Jenkins 有一个RAD Studio plugin 将 Delphi 项目的编译集成到作业中。它不是必须使用它(插件),我们使用命令行工具和MSBuild来编译项目。
project DUnItX(用于创建单元测试)与 Jenkins 无缝集成。
在这里你可以找到一些关于 Jenkins 和 Delphi 集成的文章。介绍、安装……都是西班牙语,但您可以毫无问题地翻译,并且附带的图像和代码非常简单。
1- Integración continua con Delphi (GIT)(介绍)
2- Integración continua con Delphi (Jenkins) – Instalación(安装)
3- Integración continua con Delphi (Jenkins) – Primer proyecto(第一个项目)
4- Integración continua con Delphi (Jenkins) – Pipelines(管道使用)
【讨论】:
我们使用 Hudson :),它适用于 Delphi。
这是我的一个项目的完整设置:
<?xml version='1.0' encoding='UTF-8'?>
<project>
<actions/>
<description></description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.scm.CVSSCM">
<cvsroot>:sspi:cvsonly:foo@bar:/baz</cvsroot>
<module>SIP</module>
<canUseUpdate>false</canUseUpdate>
<flatten>true</flatten>
<isTag>false</isTag>
<excludedRegions></excludedRegions>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<triggers class="vector"/>
<builders>
<hudson.tasks.BatchFile>
<command>"C:\Program Files\Nant\bin\nant" -buildfile:etc\sip.build build-d7 test</command>
</hudson.tasks.BatchFile>
</builders>
<publishers>
<hudson.tasks.BuildTrigger>
<childProjects>quux, foozle, wibble</childProjects>
<threshold>
<name>SUCCESS</name>
<ordinal>0</ordinal>
<color>BLUE</color>
</threshold>
</hudson.tasks.BuildTrigger>
</publishers>
<buildWrappers/>
</project>
sip.build 的 delphi-7 目标构建项目的测试套件(DUnit 的 TextTestRunner),因此作业的输出只是失败/错误测试的计数,这要归功于:
var
R: TTestResult;
begin
R := TextTestRunner.RunRegisteredTests;
ExitCode := R.ErrorCount + R.FailureCount;
end;
【讨论】:
我们使用CruiseControl.NET,它与Delphi完美配合。
【讨论】:
Embarcadero 本身似乎使用 Hudson。请参阅 Embarcadero 开发经理 Nick Hodges 的评论。 http://blogs.embarcadero.com/nickhodges/2010/03/10/39369#comment-29952
【讨论】:
现在替换为: Continua CI
【讨论】:
Hudson 很棒,它也可以作为MSI setup 使用。较旧的 Delphi 版本(MSBuild 之前)的用户可以使用流行的 Apache Ant 和 NAnt 构建脚本环境创建构建脚本。当然也可以进行简单的命令行(批处理脚本)构建。
其中的亮点之一 安装程序是它带有一个JRE, 要完全自给自足。这是 因为 Windows 用户通常不会 知道如何处理 *.war 文件, 他们通常不喜欢去 命令提示符和运行 Java 手动命令。
因此无需先经过太多安装程序和命令行即可轻松尝试。
安装后确保访问管理应用程序中的插件页面,有许多可用的扩展,对 Delphi 开发人员也很有用。插件概述在线here。
适用于 Delphi 的 Hudson 工具:还有一个适用于 Delphi 的 Code Coverage 工具,支持 Hudson here。
TeamCity 是另一个非常好的 CI 系统。它是一个商业产品,但提供最多 20 个用户的免费许可证和 3 个构建代理上的 20 个构建配置。
Bamboo 是适用于任何语言的 CI 系统。它可从 Atlassian 获得。它的起价为 10 美元 - 这包括所有功能和无限用户,但仅限于 10 个计划,仅在安装它的服务器上运行构建。它可以使用 Amazon Elastic Compute Cloud 实例作为远程代理。
Automated Build Studio 来自 SmartBear。借助 Automated Build Studio Server,它在 FinalBuilder 之前引入了 CI。
【讨论】:
将我们的Parabuild 添加到要检查的工具列表中 - 它几乎可以构建可以从命令行构建的任何东西 - 包括 Delphi,它提供与 Perforce 和其他版本的集成控制系统,例如 Git 和 Bazaar。
【讨论】:
Hudson 使用简单,带有一些基于 Web 的助手,因为 Delphi 项目是使用 MSBuild 构建的。
如果您需要更多自定义和第三方工具集成(例如集成指标工具),那么 CruiseControl.NET 是理想的解决方案。
看看我的CC.NET Dashboard page for DelphiCodeToDoc(你也可以看看配置文件)。我正在 checkout + gui 和命令行版本的编译和单元测试 + 单元测试执行和报告 + ftp 上传构建交付。
【讨论】:
只是为了支持 CruiseControl.NET,因为 Delphi 2007 及更高版本基于 MSBuild,那么通过 CC.NET 构建应该没有问题。 DUUnit 有一个补丁,因此它将结果输出到 XML 文件,然后可以将其集成到构建结果图表中。
【讨论】:
errrm,你能定义你真正在寻找什么吗?
您使用短语continuous integration,但您的意思是continuous build 以确保它可以编译和喜欢,或者您实际上是指continuous integration,因为您还运行回归测试?
我会很好奇你是怎么做到的(自动?)。
这并不重要,因为出色的 Hudson(绝对不仅适用于 java)有许多插件,但也允许您执行 DOS 批处理脚本 - 任何您愿意编写、构建、测试、报告结果等的脚本。
【讨论】:
另一个选项(虽然不是免费的,有限的用户 10 美元)是Atlassian Bamboo。 JetBrains TeamCity 是另一个免费的(用户数量有限)。我在 Delphi 2009/2010 上都试过了,它们工作得很好。两者都允许与 Perforce 以及其他 SCM 集成。
【讨论】: