steps.checkout 定义

使用 checkout 配置管道签出源代码的方式。

steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  fetchTags: string # Set to 'true' to sync tags when fetching the repo, or 'false' to not sync tags. See remarks for the default behavior.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  path: string # Where to put the repository. The root directory is $(Pipeline.Workspace).
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
  retryCountOnTaskFailure: string # Number of retries if the task fails.
steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  path: string # Where to put the repository. The root directory is $(Pipeline.Workspace).
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
  retryCountOnTaskFailure: string # Number of retries if the task fails.
steps:
- checkout: string # Required as first property. Configures checkout for the specified repository.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  path: string # Where to put the repository. The root directory is $(Pipeline.Workspace).
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  target: string | target # Environment in which to run this task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
steps:
- checkout: string # Required as first property. Whether or not to check out the repository containing this pipeline definition.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  path: string # Where to put the repository. The root directory is $(Pipeline.Workspace).
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.
steps:
- checkout: string # Required as first property. Whether or not to check out the repository containing this pipeline definition.
  clean: string # If true, run git clean -ffdx followed by git reset --hard HEAD before fetching.
  fetchDepth: string # Depth of Git graph to fetch.
  lfs: string # Set to 'true' to download Git-LFS files. Default is not to download them.
  persistCredentials: string # Set to 'true' to leave the OAuth token in the Git config after the initial fetch. The default is not to leave it.
  submodules: string # Set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules. Default is not to fetch submodules.
  condition: string # Evaluate this condition expression to determine whether to run this task.
  continueOnError: boolean # Continue running even on failure?
  displayName: string # Human-readable name for the task.
  enabled: boolean # Run this task when the job runs?
  env: # Variables to map into the process's environment.
    string: string # Name/value pairs
  name: string # ID of the step.
  timeoutInMinutes: string # Time to wait for this task to complete before the server kills it.

引用此定义的定义: 步骤

属性

checkout 字符串。 作为第一个属性是必需的。
为指定的存储库配置签出。 指定 selfnone存储库名称存储库资源。 有关详细信息,请参阅在管道中签出多个存储库

注意

checkout如果没有步骤,则 对于 ,默认为 jobs.job.step.checkoutnone对于 ,则 默认selfjobs.deployment.steps.checkout

checkout 字符串。 作为第一个属性是必需的。
是否检查包含此管道定义的存储库。 指定 selfnone

clean 字符串。
如果为 true,请在提取之前运行 git clean -ffdx,然后运行 git reset --hard HEAD。 true |假。

fetchDepth 字符串。
要提取的 Git 图形的深度。

fetchTags 字符串。
设置为“true”以在提取存储库时同步标记,设置为“false”表示不同步标记。 有关默认行为,请参阅备注。

lfs 字符串。
设置为“true”以下载 Git LFS文件。 默认不下载它们。

persistCredentials 字符串。
设置为“true”,在初始提取后将 OAuth 令牌保留在 Git 配置中。 默认值为不保留它。

submodules 字符串。
对于单个级别的子模块,设置为“true”,或设置为“recursive”以获取子模块的子模块。 默认不提取子模块。

path 字符串。
放置存储库的位置。 根目录为 $ (Pipeline.Workspace) 。

condition 字符串。
计算此条件表达式以确定是否运行此任务。

continueOnError布尔值
即使在失败时仍继续运行?

displayName 字符串。
任务的用户可读名称。

targettarget
运行此任务的环境。

enabled布尔值
在作业运行时运行此任务?

env 字符串字典。
要映射到进程的环境的变量。

name 字符串。
步骤的 ID。 可接受的值:[-_A-Za-z0-9]*。

timeoutInMinutes 字符串。
在服务器终止此任务之前等待此任务完成的时间。

注意

管道可以配置作业级别超时。 如果作业级别超时间隔在步骤完成之前已过,则包括步骤) 在内的正在运行的作业 (终止,即使该步骤配置了更长 timeoutInMinutes 的间隔也是如此。 有关详细信息,请参阅 超时

retryCountOnTaskFailure 字符串。
如果任务失败,则重试次数。

备注

浅提取

重要

2022 年 9 月 Azure DevOps 冲刺 209 更新后创建的新管道默认启用了浅提取,并配置了深度为 1。 以前默认不是浅提取。 若要检查管道,请在管道设置 UI 中查看浅层提取设置。

若要禁用浅层提取,可以执行以下两个选项之一。

  • 管道设置 UI 中禁用浅层提取选项。
  • checkout步骤中显式设置fetchDepth: 0

若要配置管道的提取深度,可以在步骤中checkout设置 fetchDepth 属性,或在管道设置 UI 中配置浅层提取设置。

注意

如果在 checkout 步骤中显式设置 fetchDepth,则该设置优先于管道设置 UI 中配置的设置。 设置 fetchDepth: 0 将提取所有历史记录,并覆盖“浅提取”设置。

Clean 属性

如果未设置属性 clean ,则其默认值由 YAML 管道的 UI 设置中的 清理 设置进行配置,默认情况下设置为 true。 除了使用 checkout 提供的清理选项外,还可以在工作区中配置清理。 有关工作区和清理选项的详细信息,请参阅作业中的工作区主题。

同步标记

签出步骤在提取 Git 存储库的内容时使用 --tags 选项。 这会导致服务器提取所有标记以及这些标记所指向的所有对象。 这会增加在管道中运行任务的时间,尤其是在具有大量标记的大型存储库时。 此外,即使启用浅提取选项,签出步骤也会同步标记,因此可能会破坏其用途。 为了减少从 Git 存储库提取或拉取的数据量,Microsoft 添加了一个新签出选项来控制同步标记的行为。 此选项在经典管道和 YAML 管道中都可用。

是否在签出存储库时同步标记可以通过设置 fetchTags 属性在 YAML 中配置,并且通过配置同步标记设置在 UI 中配置。

若要在 YAML 中配置设置,请设置 fetchTags 属性。

steps:
- checkout: self
  fetchTags: true

若要在管道 UI 中配置设置,请编辑 YAML 管道,然后选择“更多操作”、“触发器”、“YAML”、“获取源”和检查或取消选中“同步标记”复选框。 有关详细信息,请参阅 同步标记

默认行为

  • 对于在 2022 年 9 月发布的 Azure DevOps 冲刺 209 之前创建的现有管道,同步标记的默认值与添加“同步标记”选项之前的现有行为相同,即 true
  • 对于在 Azure DevOps 冲刺版本 209 之后创建的新管道,同步标记的默认值为 false

重要

UI 中的 同步标记 设置为 true 优先于 fetchTags: false YAML 中的语句。 如果在 UI 中将 同步标记 设置为 true,则即使 fetchTags YAML 中的 设置为 false,也会同步标记。

示例

若要完全避免同步源,请执行以下操作:

steps:
- checkout: none

注意

如果在本地服务帐户中运行代理,并且想要使用 git 操作或加载 git 子模块来修改当前存储库,请向项目集合生成服务帐户用户授予适当的权限。

- checkout: self
  submodules: true
  persistCredentials: true

若要在管道中签出多个存储库,请使用多个 checkout 步骤:

- checkout: self
- checkout: git://MyProject/MyRepo
- checkout: MyGitHubRepo # Repo declared in a repository resource

有关详细信息,请参阅在管道中签出多个存储库

请参阅