释放磁盘空间功能
TeamCity 需要在代理上为构建分配磁盘空间,默认分配为 3 GB。
如果您需要更多的空间进行构建,请使用 释放磁盘空间 构建功能。 它允许在构建之前通过清理旧的构建数据,如构建的检出目录和各种缓存,来确保 代理 上有一定的可用磁盘空间。 在构建功能设置中为所需的磁盘空间指定一个新值。
请注意,Free disk space 构建功能会跟踪艺术品的大小,并自动计算解决艺术品依赖所需的磁盘空间。 在指定所需的磁盘空间时,您无需考虑在构建过程中下载的工件的大小。
运作方式
在构建之前和每个构建准备阶段(更新源)之前,代理将会检查三个位置当前可用的磁盘空间:
代理系统
代理的临时目录
构建检出目录
所有这些地点都必须满足同一特定要求。 如果指定了 失败条件,如果任一位置不满足要求,构建将失败。
如果磁盘空间的量不足所需,代理将尝试在继续之前删除其他构建的旧数据。
所清理的数据包括:
被标记为 删除 的签出目录
按照最近最少使用顺序,其他构建的签出目录的内容
之前下载的工件的缓存(这些构件是通过 TeamCity 工件依赖项下载到代理的)
清理本地的 Docker 缓存
清理本地的 NuGet 包缓存
如果您需要确保在释放磁盘空间时不会删除检出目录,请将 system.teamcity.build.checkoutDir.expireHours
属性设置为 从未
。
设置
您可以使用释放磁盘空间构建功能来改变默认需要的 3 GB 磁盘空间。 配置以下设置:
设置 | 描述 |
---|---|
所需的可用磁盘空间 | 您可以在此处指定自定义的可用磁盘空间值(以字节或使用kb、mb、gb或tb后缀之一)。 |
如果无法释放足够的磁盘空间,构建失败 | 启用以添加相应的 构建失败条件。 |
设定磁盘空间值的替代方法
为确保兼容性,可以通过以下属性来指定可用磁盘空间的值。 然而,建议使用释放磁盘空间构建功能,因为这些属性可能会在未来的 TeamCity 版本中被移除。
属性可以被定义:
全局地为构建代理(在代理的
buildAgent.properties
文件中)通过指定其系统属性,为特定的构建配置。
所需的可用空间值是通过以下属性定义的:
system.teamcity.agent.ensure.free.space
用于构建检出目录system.teamcity.agent.ensure.free.temp.space
用于代理的temp
目录
如果 teamcity.agent.ensure.free.temp.space
没有定义, teamcity.agent.ensure.free.space
属性的值将被使用。
这些属性的值指定了在构建开始之前需要确保的可用磁盘空间量。 值应该是一个数字,后面跟着 kb、mb、gb、kib、mib 或 gib 的后缀。 使用无后缀的字节。例如:
这是 TeamCity 如何选择一个可用的磁盘空间值的方法:
使用
system.teamcity.agent.ensure.free.space
,在代理上定义或在项目或构建配置级别上重写。如果 (1)未定义,请使用
teamcity.agent.ensure.free.space
,在代理或项目或构建配置级别上定义或覆盖。如果(1-2)未定义,请使用在构建功能中定义的自定义值。
如果没有定义自定义值,请使用默认值 3 GB。
禁用工件缓存
TeamCity 构建代理会维护已发布和下载的构建工件的缓存,以减少对同一代理的网络传输。 缓存存储在 <构建代理 主页>\system\.artifacts_cache
目录中,并且只要释放磁盘空间构建功能配置正确,就会自动删除。 在下载工件依赖关系时,如果存储空间不足以存放缓存,TeamCity 会自动禁用缓存。
如果不需要缓存构件,可以通过在项目或其构建配置中添加 teamcity.agent.filecache.publishing.disabled=true
配置参数来关闭它。 当构建工件较大且未在 TeamCity 中使用,或者如果构建工件缓存目录并未位于与构建检出目录相同的磁盘上时,这可能会有所帮助。 然而,如果有足够的空间存储缓存,代理仍会缓存作为工件依赖项下载的工件。