Clean Checkout(干净签出)
Clean Checkout (干净签出,也称为 干净源 )是一种操作,确保下一次构建将获得从 VCS 全部获取的源代码副本。 所有 Build Checkout Directory的内容都已被删除,并且已从版本控制中重新获取源代码。
如果签出目录的内容已被外部流程通过添加新的,修改或删除现有文件进行了修改,建议进行干净的签出。
您可以通过执行以下操作强制清理源文件:
对于构建配置——从 构建配置主页 页面,打开 操作 下拉菜单并选择 强制执行干净签出...。
对于代理——从 代理详细信息 页面,点击 在此代理上清理源代码链接,位于 其他 部分下。
该操作将打开一个代理/构建配置列表,用于清理源代码。
Clean Sources 是一个单一的操作,触发之后,在每个选定的代理上的每个选定的配置的下一次构建运行中只执行一次。
note
如果您将特定目录设置为构建签出目录(而不是使用默认目录),请记住,在干净签出过程中,该目录的所有内容都将被删除。
TeamCity 维护了一个内部缓存,用于优化与 VCS 服务器的通信。 缓存在 清理 期间被重置。 为了解决源代码更新问题,可能需要通过 UI 中的 诊断 | 缓存 选项卡手动重置缓存,或者删除 <TeamCity Data Directory>
/system/caches
目录。
您还可以启用在每次构建前自动清理源代码,只需在 创建/编辑构建配置 > 版本控制设置 页面上勾选 在构建之前删除签出目录中的所有文件 选项。 如果勾选此选项,TeamCity 会在每次构建之前执行完全签出。 如果未启用干净签出,TeamCity 会将签出目录中的源代码逐步更新至所需状态。
TeamCity 尝试检测签出目录中的源文件是否与预期状态不一致,并在这种情况下触发干净签出以确保源文件正常。 这意味着,在某些情况下,即使在 VCS 设置中没有启用干净签出功能,并且用户没有通过网页 UI 请求,TeamCity 也能检测到需要干净签出。 在这种情况下,签出目录的所有内容都会被删除,然后由源文件从头开始重新填充。 如果有关决策的任何详细信息可用,它们将在与签出相关的记录之前添加到构建日志中。
以下是 TeamCity 执行自动干净签出时的情况概述:
如果在构建配置的“版本控制设置”中使用 在构建之前删除签出目录中的所有文件 选项启用该功能
构建签出目录未找到或为空(构建配置是首次在代理上启动,或者目录自上次构建以来已消失)。 这也包括以下内容:
一位用户通过网页用户界面对构建配置或代理调用了 "Enforce clean checkout" (执行干净签出)动作
构建是通过选中'在构建前干净签出目录中的所有文件'选项的自定义运行构建对话框触发的,或者是由具有相应选项的触发器触发的
构建是由设置了“在构建前干净签出目录中的所有文件”选项的计划触发器触发的,或者作为构建链的一部分,其中最上层的构建是在计划触发器中的设置下触发的,同时也选择了“应用于所有快照依赖项”。
构建配置的 VCS 设置已更改
此目录中的上一个构建是具有不同 VCS 设置的构建配置(只有在为具有各自 VCS 设置和 VCS Roots 的几个构建配置指定相同的签出目录时才会出现)。
此目录中的上一个构建是在比当前版本更新的修订版本上构建的(只能出现在 历史构建中)
在上一次构建中,应用或回滚补丁时出现了一个严重错误,因此 TeamCity 无法确保签出目录包含已知版本的文件。
构建文件清理器(Swabra) 已启用相应的选项,并且检测到需要进行干净签出
自定义签出目录包含特定于代理的参数,如
%teamcity.agent.work.dir%
(8.1 版本之前)