如何防止TeamCity Build agent删除工作文件夹

如何防止TeamCity Build agent删除工作文件夹,teamcity,Teamcity,我的构建脚本包含一个本地属性文件,用于设置特定于计算机的值(例如构建的基本目录)。对于源代码下载到的每台计算机,这些都是唯一的 当生成代理有一段时间没有运行时,它会删除项目的工作文件夹,并最终删除属性文件。稍后进行更改时(在生成代理清理最近未使用的文件夹的一段时间之后),生成将中断,直到恢复属性文件 我不确定正确的方法是防止TeamCity的构建代理删除该文件夹/文件(不确定如何完成,这似乎是最简单的解决方案),还是让构建脚本在构建运行且属性文件不存在时尝试生成属性文件 欢迎提出任何建议 此属性

我的构建脚本包含一个本地属性文件,用于设置特定于计算机的值(例如构建的基本目录)。对于源代码下载到的每台计算机,这些都是唯一的

当生成代理有一段时间没有运行时,它会删除项目的工作文件夹,并最终删除属性文件。稍后进行更改时(在生成代理清理最近未使用的文件夹的一段时间之后),生成将中断,直到恢复属性文件

我不确定正确的方法是防止TeamCity的构建代理删除该文件夹/文件(不确定如何完成,这似乎是最简单的解决方案),还是让构建脚本在构建运行且属性文件不存在时尝试生成属性文件


欢迎提出任何建议

此属性文件来自何处?它是由您的脚本生成的吗

TeamCity从源服务器获取源文件,因此可能会对其进行清理,您不能依赖于克隆源后放入该源的文件


您可以做的是将此文件的副本放在安全的地方,然后在脚本中,将此文件复制到需要的位置

避免特定于机器的行为是构建服务器的目标之一,因此TeamCity的设计并不是为了让构建变得简单


关于您提到的特定属性,如果生成的基本目录始终是相对于签出目录的同一路径,则可以在生成配置中设置环境变量,例如设置
env.base\u目录=%system.teamcity.build.checkoutDir%/build

这两个建议都有效。最后,我从一个(签入的)模板文件生成了这个文件,并修改了机器的属性

@马克·雷蒙德:你的评论很有道理。TeamCity绝对不会让事情变得简单。您的解决方案可以工作,但我倾向于修改构建脚本以生成文件,因为它可以帮助其他下载新代码的开发人员在不构建特定于构建机器的解决方案的情况下开始工作

@杰拉尔德:这就是我最终必须要做的。我已将我的Nant目标发布在下面以供参考:

具体的问题是设置其他路径可以相对设置的基本目录。以下是我最终采用的解决方案:



出于性能原因,我很好奇不删除该文件夹。有这样的设置吗?我从来没有找到让TeamCity离开文件夹的设置,这就是为什么我使用下面提到的解决方案。