在 构建日志 在我的项目中,我可以看到这些属性:
<integrationProperties>
<CCNetProject>Gdet_T</CCNetProject>
...
<LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
<LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>
我要传递属性(property)
CCNetProject
和 LastChangeNumber
到批处理文件。 它适用于 CCNetProject
, 因为它可以在批处理中用作环境变量 %CCNetProject%
.但它不适用于其他属性 (那些不是以
CCnet
前缀开头)为 LastChangeNumber
或 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)
我确定这很简单,但是......我找不到!任何的想法 ?
最佳答案
CCNET 将以下参数传递给外部程序:
CCNetArtifactDirectory
CCNetBuildCondition
CCNetBuildDate
CCNetBuildTime
CCNetFailureUsers
CCNetIntegrationStatus
CCNetLabel
CCNetLastIntegrationStatus
CCNetListenerFile
CCNetModifyingUsers
CCNetNumericLabel
CCNetProject
CCNetProjectUrl
CCNetRequestSource
CCNetUser
CCNetWorkingDirectory
如您所见
LastIntegrationStatus
例如可通过 CCNetLastIntegrationStatus
获得但是 LastModificationDate
例如没有等价物。你可以通过
<buildArgs>
传递额外的参数或 <environment>
但是 内您拥有的 CCNET 配置 无权限关于上面提到的积分属性。大多数从 CCNET 开始的人(包括我自己)都会尝试类似 <buildArgs>$(CCNetProject)</buildArgs>
的方法。并失败。看看我的 answer to a similar question .
抱歉,我无法提供更好的解决方案。
更新(关于 Thinker's suggestion):
使用
$[$CCNetLabel]
CCNET 里面的配置好像不行。坦率地说,如果有的话,我会感到相当惊讶。配置是静态的,而
CCNetLabel
是动态的,可能会随着每个集成构建而改变。假设您可以访问配置中的这些动态属性,配置可能会随着每次构建而改变。由于更改配置意味着自动重新启动 CCNET 服务器,因此每次构建都会导致服务器重新启动。实际上不是一种理想的行为,是吗?
关于continuous-integration - 如何使用 CruiseControlNet 将集成属性传递给批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592059/