Continuous integration 如何使用CruiseControlNet将集成属性传递给批处理文件?
在我的项目的构建日志中,我可以看到以下属性:Continuous integration 如何使用CruiseControlNet将集成属性传递给批处理文件?,continuous-integration,cruisecontrol.net,ccnet-config,Continuous Integration,Cruisecontrol.net,Ccnet Config,在我的项目的构建日志中,我可以看到以下属性: <integrationProperties> <CCNetProject>Gdet_T</CCNetProject> ... <LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate> <LastChangeNumber>10841</LastChangeNumber> </
<integrationProperties>
<CCNetProject>Gdet_T</CCNetProject>
...
<LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
<LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>
我尝试将其作为环境变量传递,但失败:
<exec>
<executable>$(WorkingFolderBase)\MyBatch.bat</executable>
<baseDirectory>$(WorkingFolderBase)\</baseDirectory>
<environment>
<variable>
<name>svn_label</name>
<value>"${LastModificationDate}"</value>
</variable>
</environment>
</exec>
$(WorkingFolderBase)\MyBatch.bat
$(WorkingFolderBase)\
svn_标签
“${LastModificationDate}”
当我显示参数或变量时,结果总是一样的:空字符串或变量名$(svn\u标签)
我相信这很简单,但是。。。我找不到!有什么想法吗?CCNET将以下参数传递给外部程序:
CCNetArtifactDirectory
CCNetBuildCondition
CCNetBuildDate
CCNetBuildTime
CCNetFailureUsers
CCNetIntegrationStatus
CCNetLabel
CCNetLastIntegrationStatus
CCNetListenerFile
CCNetModifyingUsers
CCNetNumericLabel
CCNetProject
CCNetProjectUrl
CCNetRequestSource
CCNetUser
CCNetWorkingDirectory
如您所见,LastIntegrationStatus
例如可通过CCNetLastIntegrationStatus
获得,但LastModificationDate
例如没有等效项
您可以通过
或
传递附加参数,但在CCNET配置中,您对上述集成属性没有访问权限。大多数开始使用CCNET的人(包括我自己)都会尝试类似于$(CCNetProject)
的方法,但都失败了
看看我的衣服
很抱歉,我无法提供更好的解决方案
更新(关于):
在CCNET配置中使用$[$CCNetLabel]
似乎不起作用
坦率地说,如果真是这样的话,我会感到相当惊讶。配置是静态的,而CCNetLabel
是动态的,可能会随着每次集成构建而改变。假设您可以访问配置中的这些动态属性,则配置可能会随着每次生成而更改。由于更改配置意味着自动重新启动CCNET服务器,因此每次生成都会导致服务器重新启动。实际上这不是一个理想的行为,是吗?好的,找到了解决方案。
需要使用名为SvnRevisionLabeller的特定标签来检索svn修订版。
然后可通过CCNetLabel
environment变量获取
http://mysvnrootproject/trunk
您混淆了环境变量和参数示例。查看我提到的旧问题,我发现思考者给出了以下答案:。我明天会尝试这个解决方案。是的,我明天也会尝试ccnet标签机获取svn版本号我甚至无法在CC.NET中获取svn版本。。。即使有一个贴标机块。。。对于一个小请求来说相当困难:将svn修订版传递到批处理文件。也许我应该用这个标题打开一个新问题?如果只是关于访问批处理文件中的标签,可能有一个解决方法:在CCNET配置中选择适当的标签机(例如,上次更改标签机[sic]),并通过%CCNetLabel%
访问它。这不会让您访问SCM的修改日期,标签机的行为取决于SCM类型,但您可能会在批处理文件中获得LastChangeNumber
。这有点奇怪,但我会接受我的回答:)谢谢你们的帮助,这对调查非常有用。
CCNetArtifactDirectory
CCNetBuildCondition
CCNetBuildDate
CCNetBuildTime
CCNetFailureUsers
CCNetIntegrationStatus
CCNetLabel
CCNetLastIntegrationStatus
CCNetListenerFile
CCNetModifyingUsers
CCNetNumericLabel
CCNetProject
CCNetProjectUrl
CCNetRequestSource
CCNetUser
CCNetWorkingDirectory
<labeller type="svnRevisionLabeller">
<url>http://mysvnrootproject/trunk</url>
</labeller>