繁体   English   中英

Delphi 持续集成系统

[英]Continuous Integration System for Delphi

有没有像 Hudson for Java 那样的 Delphi 的 CI 系统? Hudson 是否有任何 Delphi 集成?

我们使用 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>&quot;C:\Program Files\Nant\bin\nant&quot; -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

Hudson很棒,它也可用作MSI 设置 旧 Delphi 版本(MSBuild 之前)的用户可以使用流行的 Apache Ant 和 NAnt 构建脚本环境创建构建脚本。 当然,简单的命令行(批处理脚本)构建也是可能的。

此安装程序的亮点之一是它带有 JRE,完全独立。 这是因为 Windows 用户通常不知道如何处理 *.war 文件,而且他们通常不喜欢进入命令提示符并手动运行 Java 命令。

因此,无需先通过太多安装程序和命令行即可轻松尝试。

安装后确保访问管理应用程序中的插件页面,有许多扩展可用,对 Delphi 开发人员也很有用。 插件概述在这里在线。

哈德森工具德尔福:还有一个代码覆盖工具,德尔福与哈德森支持这里

TeamCity是另一个非常好的 CI 系统。 它是一种商业产品,但为最多 20 个用户和 3 个构建代理上的 20 个构建配置提供免费许可证。

Bamboo是适用于任何语言的 CI 系统。 它可以从 Atlassian 获得。 它的起价为 10 美元 - 这包括所有功能和无限用户,但仅限于 10 个计划,仅在安装它的服务器上运行构建。 它可以使用 Amazon Elastic Compute Cloud 实例作为远程代理。

SmartBear 的自动构建工作室 在Automated Build Studio Server 中,它在FinalBuilder 之前引入了CI。

我们使用詹金斯 Jenkins 有一个RAD Studio 插件,可以将 Delphi 项目的编译集成到作业中。 使用它(插件)不是强制性的,我们使用命令行工具和 MSBuild 来编译项目。

项目 DUnItX (用于创建单元测试)与 Jenkins 无缝集成。

在这里你可以找到一些关于 Jenkins 和 Delphi 集成的文章。 介绍、安装、...是西班牙语,但您可以毫无问题地进行翻译,并且包含图像和代码非常简单。

1- Integración continua con Delphi (GIT) (介绍)
2- Integración continua con Delphi (Jenkins) – Instalación (INSTALLATION)
3- Integración continua con Delphi (Jenkins) – Primer proyecto (FIRST PROJECT)
4- Integración continua con Delphi (Jenkins) – 管道管道的使用)

将我们的Parabuild添加到要检查的工具列表中——它几乎构建了任何可以从命令行构建的东西——包括 Delphi,它提供了与 Perforce 和其他版本控制系统(如 Git 和 Bazaar)的集成。

我们使用 Jenkins CI 系统和Owly CI工具作为构建系统和依赖项处理程序。

看看这个教程

初始设置只需不到 5 分钟

Hudson使用简单,带有一些基于 Web 的助手,因为 Delphi 项目是使用 MSBuild 构建的。

如果您需要更多自定义和 3rd 方工具集成(例如集成指标工具),那么CruiseControl.NET是理想的解决方案。

看看我的CC.NET Dashboard page for DelphiCodeToDoc (你也可以看看配置文件)。 我正在做结帐+gui和命令行版本的编译以及单元测试+单元测试执行和报告+ftp上传构建交付

只是为了表达我对 CruiseControl.NET 的支持,因为 Delphi 2007 及更高版本基于 MSBuild,那么通过 CC.NET 构建应该没有问题。 DUUnit 的某个地方有一个补丁,因此它将结果输出到 XML 文件,然后可以将其集成到构建结果图表中。

errrm,你能定义你真正在寻找什么吗?

您使用了“ continuous integration这个短语,但您的意思是continuous build以确保它可以编译和喜欢,还是实际上是指在您还运行回归测试的意义上的continuous integration

我会好奇你是如何做到这一点的(Auto-it?)。

不,它真正的问题太多,因为精彩的哈德森(这是决然不会只是JAVA)有众多的插件,也可以让你执行一个DOS批处理脚本-任何脚本,你愿意写,打造,测试,报告结果等。

另一种选择(虽然不是免费的,有限数量的用户 10 美元)是Atlassian Bamboo JetBrains TeamCity 是另一个免费的(用户数量有限)。 我在 Delphi 2009/2010 上都试过,它们工作得很好。 两者都允许与其他 SCM 中的 Perforce 集成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM