Clean Checkout(干净签出)
Clean Checkout (干净签出,也称为干净源)是一种操作,确保下一次构建将获得从 VCS 全部获取的源代码副本。 所有Build Checkout Directory的内容都已被删除,并且已从版本控制中重新获取源代码。
强制执行干净的签出
如果签出目录的内容已被外部流程通过添加新的,修改或删除现有文件进行了修改,建议进行干净的签出。
您可以强制执行 Clean Sources 操作:
对于构建配置 —— 从 构建配置首页,使用右上角的 操作 下拉菜单。
对于代理 —— 从 代理详情 页面,使用 杂项 部分,清理此代理上的源 选项。
该操作将打开一个代理/构建配置列表,用于清理源代码。
Clean Sources 是一个单一的操作,触发之后,在每个选定的代理上的每个选定的配置的下一次构建运行中只执行一次。
TeamCity 维护了一个内部缓存,用于优化与 VCS 服务器的通信。 缓存在 清理 期间被重置。 要解决源更新问题,可能需要在用户界面中使用 诊断 | 缓存 标签页,或者删除 <TeamCity 数据目录>/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 版本之前)