示例cruisecontrol.net ccnet.config,可与msbuild和delphiXE一起使用



不久前,我曾请求帮助在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>

更新:我最初无法让它从ccnet.exe读取c:buildsccnet.config,但我发现我可以使用命令行参数运行ccnet.exe(非服务模式),这让我解决了查找ccnet.config的问题。

以下是一个项目的示例配置块,如果存在修改,该项目将在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)DelphiCodeToDocSource</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)DelphiCodeToDocbuildlogs*.xml</file>
      </files>
    </merge>
  <!-- Statistics -->
    <xmllogger />
    <rss/>
    <statistics>
    </statistics>
  </publishers>
</project>

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

  <cb:define MSBuildPath="C:WINDOWSMicrosoft.NETFrameworkv3.5" />

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

使用以下内容代替<exec>

<msbuild>
  <projectFile>project1.dproj</projectFile>
</msbuild>

为您的项目添加触发器:

<triggers>
  <intervalTrigger name="continuous" seconds="30"
    buildCondition="IfModificationExists" initialSeconds="30" />
</triggers>

剩下的应该行得通。

关于您的错误消息

[CCNet服务器:错误]内部错误:访问路径"C:\Program"Files(x86)\CruiseControl.NET\server\Project1\WorkingDirectory否认。

您应该在CC.NET安装之外定义工作目录和工件目录,类似于c:builds

最新更新