使用msbuild和delphi XE的样本cruisecontrol.net ccnet.config?

War*_* P 4 delphi cruisecontrol.net continuous-integration delphi-xe

前段时间我问过帮助在Delphi中进行持续集成工作.对于使用巡航控制,一个侧面答案有部分不完整(不适合我)的信息[这里] [2].

我已经让Jenkins/Hudson工作了,关于它的简单部分是(使用Delphi)配置完全通过Web浏览器完成.然而,使用CruiseControl.net设置起来要困难得多.

我想看一个示例ccnet.config,它将使用来自CruiseControl的MSBUILD构建一个hello-world delphi项目(Project1.dproj),并在每次修改subversion(或mercurial)上游源时自动重建.

到目前为止,我有:

  • 安装并获得CruiseControl.net版本1.6.7981并运行.
  • 我没有有效的项目 ccnet.config

这是我的ccnet.config,最初是我的,<exec>并按照以下建议更改为<msbuild>:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
        <!-- CRUISECONTROL.NET Server configuration -->
        <project name="Project1">
            <tasks>
                <msbuild>
                    <projectFile>project1.dproj</projectFile>
                </msbuild>
            </tasks>
        </project>
</cruisecontrol>
Run Code Online (Sandbox Code Playgroud)

更新:我原本无法c:\builds\ccnet.config从ccnet.exe 读取它,但我发现我可以使用命令行参数运行ccnet.exe(非服务模式),这让我找到了我的ccnet.config问题.

Tri*_*enT 5

以下是项目的示例配置块,如果存在修改,则在05:00重建:

<!-- DelphiCodeToDoc Project -->
<project name="DelphiCodeToDoc" queue="Q1" queuePriority="1">
  <category>Delphi</category>
  <artifactDirectory>$(ArtifactBaseDir)\DelphiCodeToDoc</artifactDirectory>
  <workingDirectory>$(WorkingBaseDir)\DelphiCodeToDoc</workingDirectory>
  <triggers>
    <scheduleTrigger time="05:00" buildCondition="IfModificationExists" name="Scheduled" />
  </triggers>

  <!-- SVN implementation -->
  <sourcecontrol type="svn">
    <trunkUrl>http://dephicodetodoc.svn.sourceforge.net/svnroot/dephicodetodoc/trunk/DelphiCodeToDoc/</trunkUrl>
    <workingDirectory>$(WorkingBaseDir)\DelphiCodeToDoc</workingDirectory>
  </sourcecontrol>

  <!-- Build tasks to implement -->
  <tasks>

    <!-- Compile command-line application -->
    <msbuild>
      <executable>$(MSBuildPath)\MSBuild.exe</executable>
      <workingDirectory>$(WorkingBaseDir)\DelphiCodeToDoc\Source</workingDirectory>
      <projectFile>DCTD_cmd.dproj</projectFile>
      <buildArgs>/target:Build /p:Config=Debug</buildArgs>
      <timeout>900</timeout>
      <logger>$(MSBuildLogger)</logger>
    </msbuild>

  <!-- Publishing compiled results -->
  <publishers>
    <merge>
      <files>
        <file>$(ArtifactBaseDir)\DelphiCodeToDoc\buildlogs*.xml</file>
      </files>
    </merge>

  <!-- Statistics -->
    <xmllogger />
    <rss/>
    <statistics>
    </statistics>

  </publishers>
</project>
Run Code Online (Sandbox Code Playgroud)

您可以$(MSBuildPath)通过以下方式定义变量:

  <cb:define MSBuildPath="C:\WINDOWS\Microsoft.NET\Framework\v3.5" />
Run Code Online (Sandbox Code Playgroud)

或者直接用真实路径替换它.