我们有一个CruiseControl.NET服务器1.5.0.4401运行。一个项目使用外部编译器,该编译器通过exec-task包含。该编译器被配置为将其输出写入位于工件目录中的文本文件中。文件名是keil_Revision-x.txt(x是版本号),而该文件的配置看起来像%ccnetartifactdirectory%\ keil_%ccnetlabel%.txt。包含构建输出作为附件
我们希望将此输出文件附加到CC为每个版本发送的电子邮件报告中。电子邮件出版商的配置(有点缩短)以下:
<email from="[email protected]" mailhost="zzz" mailport="25" includeDetails="TRUE" useSSL="FALSE">
<users>
<!-- Here are some users -->
</users>
<groups>
<!-- Here are some groups -->
</groups>
<converters>
<!-- LDAP converter-->
</converters>
<modifierNotificationTypes>
<!-- Several notification types -->
</modifierNotificationTypes>
<subjectSettings>
<!-- Here are some subject settings -->
</subjectSettings>
<attachments>
<file>${CCNetArtifactDirectory}\keil_${CCNetLabel}.txt</file>
</attachments>
</email>
唯一的问题是,该文件没有附加。巡航控制台上的调试输出不包含任何错误消息。工件目录包含所有文件,只有它们没有附加。失败在哪里?
如上所述,我们正在运行1.5.0,并且只要文件被正确标记并保存在工件目录集成属性中似乎正在工作。包含详细信息已被设置为TRUE。我个人的怀疑是括号$ []是错误的。但是,$ []和$ {}都不能完成这项工作。 – PVitt 2009-08-26 09:19:57
正如我所说:$ {CCNetLabel}完全不起作用 - 假设1.5在这一点上的行为如同1.4.4。集成属性在CCNET配置中不可访问。您需要为此目的定义一个自己的预处理器常量。 – 2009-08-26 10:03:16
好的,那么我们有下一个问题:当我们使用正常的文件名,例如keil.txt,正如你所建议的那样,CruiseControl会打开这个文件并且永远不会关闭它,所以不能被覆盖。只是这导致我把CCNetLabel放在文件名中。 也许我应该把这个开放/封闭的东西作为CC的错误。 – PVitt 2009-09-01 07:24:28