5

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

<integrationProperties>
  <CCNetProject>Gdet_T</CCNetProject>
  ...
  <LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
  <LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>

我想将属性传递CCNetProjectLastChangeNumber批处理文件。它适用于CCNetProject因为它可以在批处理中用作环境变量%CCNetProject%

但它不适用于其他属性(那些不以CCnet前缀开头)作为LastChangeNumberor LastModificationDate

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

<exec>
  <executable>$(WorkingFolderBase)\MyBatch.bat</executable>
  <baseDirectory>$(WorkingFolderBase)\</baseDirectory>
  <buildArgs>$(LastModificationDate)</buildArgs>
</exec>

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

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

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

我确定这很简单,但是……我找不到!任何想法 ?

4

2 回答 2

8

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

CCNetArtifactDirectory 
CCNetBuildCondition 
CCNetBuildDate 
CCNetBuildTime 
CCNetFailureUsers 
CCNetIntegrationStatus 
CCNetLabel 
CCNetLastIntegrationStatus 
CCNetListenerFile 
CCNetModifyingUsers 
CCNetNumericLabel 
CCNetProject 
CCNetProjectUrl 
CCNetRequestSource 
CCNetUser 
CCNetWorkingDirectory 

正如你所看到LastIntegrationStatus的,例如可以通过CCNetLastIntegrationStatusLastModificationDate例如没有等价物。

您可以通过<buildArgs>CCNET 配置中传递其他参数,<environment>但您无法访问上述集成属性。大多数从 CCNET 开始的人(包括我自己)都尝试过类似的事情并失败了。<buildArgs>$(CCNetProject)</buildArgs>

看看我对类似问题的回答

抱歉,我无法提供更好的解决方案。

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

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

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

于 2010-04-07T17:01:13.197 回答
0

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

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

<labeller type="svnRevisionLabeller"> 
  <url>http://mysvnrootproject/trunk</url> 
</labeller>
于 2010-05-05T21:12:49.767 回答