如何使用CruiseControlNet将集成属性传递给批处理文件?

Tri*_*enT 5 cruisecontrol.net continuous-integration ccnet-config

在我的项目的构建日志中,我可以看到这些属性:

<integrationProperties>
  <CCNetProject>Gdet_T</CCNetProject>
  ...
  <LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
  <LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>
Run Code Online (Sandbox Code Playgroud)

我想通过财产CCNetProjectLastChangeNumber批处理文件.它可以很好地使用CCNetProject,因为它可以在批处理中用作环境变量%CCNetProject%.

但它不适用于其他属性(那些不是以CCnet前缀开头)为LastChangeNumberLastModificationDate.

我试图将它作为参数传递,但它失败了!

<exec>
  <executable>$(WorkingFolderBase)\MyBatch.bat</executable>
  <baseDirectory>$(WorkingFolderBase)\</baseDirectory>
  <buildArgs>$(LastModificationDate)</buildArgs>
</exec>
Run Code Online (Sandbox Code Playgroud)

我试图将其作为环境变量传递,但它失败了:

<exec>
  <executable>$(WorkingFolderBase)\MyBatch.bat</executable>
  <baseDirectory>$(WorkingFolderBase)\</baseDirectory>
  <environment>
    <variable>
      <name>svn_label</name>
      <value>"${LastModificationDate}"</value>
    </variable>
  </environment>
</exec>
Run Code Online (Sandbox Code Playgroud)

当我显示参数或变量时,结果总是相同的:空字符串或变量名称 $(svn_label)

我确信这很简单,但是......我找不到了!任何的想法 ?

The*_*man 8

CCNET将以下参数传递给外部程序:

CCNetArtifactDirectory 
CCNetBuildCondition 
CCNetBuildDate 
CCNetBuildTime 
CCNetFailureUsers 
CCNetIntegrationStatus 
CCNetLabel 
CCNetLastIntegrationStatus 
CCNetListenerFile 
CCNetModifyingUsers 
CCNetNumericLabel 
CCNetProject 
CCNetProjectUrl 
CCNetRequestSource 
CCNetUser 
CCNetWorkingDirectory 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,LastIntegrationStatus例如可以通过,CCNetLastIntegrationStatus但是LastModificationDate没有等价物.

您可以通过CCNET配置<buildArgs> CCNET配置内部传递其他参数,<environment>但您无法访问上述集成属性.大多数以CCNET(包括我自己)开头的人尝试类似的东西并且失败了.<buildArgs>$(CCNetProject)</buildArgs>

看看我对类似问题的回答.

对不起,我无法提供更好的解决方案.

更新(关于思想家的建议):

使用$[$CCNetLabel]内部CCNET配置似乎不起作用.

坦率地说,如果有的话,我会感到很惊讶.配置是静态的,CCNetLabel而是动态的,可能随每个集成构建而变化.假设您可以在配置中访问这些动态属性,则配置可能会随每次构建而更改.由于更改配置意味着自动重新启动CCNET服务器,因此每次构建都会导致服务器重新启动.实际上并不是一个理想的行为,是吗?


Tri*_*enT 0

好的,找到了解决方案。需要使用名为SvnRevisionLabeller的特定标签来检索 svn 修订版本。然后可以通过CCNetLabel环境变量使用它。

http://code.google.com/p/svnrevisionlabeller/

<labeller type="svnRevisionLabeller"> 
  <url>http://mysvnrootproject/trunk</url> 
</labeller>
Run Code Online (Sandbox Code Playgroud)