配置并行作业并支付费用

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

本文介绍 Team Foundation Server 2017 (TFS 2017) 或更高版本中用于Azure Pipelines的许可模型。 只要拥有 TFS 客户端访问许可证 (CAL) ,我们就不会向你收取 Team Foundation Build (TFBuild) 费用。

使用 TFS 并行作业 ,可以在项目集合中一次运行单个版本。 可以在集合中保留数百甚至数千个发布作业。 但是,若要一次运行多个版本,需要其他并行作业。

Team Foundation Server中的每个集合都包含一个免费的并行作业。 Team Foundation Server中的每个Visual Studio Enterprise订阅者都提供一个额外的并行作业。

可以从Visual Studio市场购买其他私人作业。 Microsoft 托管代理的最大并行作业限制为 25 个。

重要

从 2019 Azure DevOps Server 开始,无需在版本中为自承载并发作业付费。 仅受你拥有的代理数的限制。

了解如何估算所需的并行作业数,并为组织购买更多并行作业。

注意

我们暂时禁止为公共项目和新组织中的某些私人项目免费授予并行作业。 但是,你可以通过提交 请求来请求此授予。 现有组织和项目不受影响。 请注意,我们需要花费 2-3 个工作日来答复你的免费层请求。

什么是并行作业?

定义管道时,可以将管道定义为 作业集合。 管道运行时,可以将多个作业作为该管道的一部分运行。 每个正在运行的作业都使用在代理上运行的 并行作业 。 如果组织没有足够的并行作业,作业将排队并运行一个。

在Azure Pipelines中,可以在 Microsoft 托管的基础结构或你自己的 (自承载) 基础结构上运行并行作业。 每个并行作业允许你一次在组织中运行单个作业。 如果使用本地服务器,则无需为并行作业付费。 并行作业的概念仅适用于Azure DevOps Services。

Microsoft 托管的并行作业与自承载并行作业

如果要在 Microsoft 管理的计算机上运行作业,请使用 Microsoft 托管的并行作业。 作业将在 Microsoft 托管的代理上运行。

如果希望Azure Pipelines协调生成和发布,但使用自己的计算机来运行它们,请使用自承载并行作业。 对于自承载并行作业,首先在计算机上安装 我们的自承载代理 。 可在组织中注册任意数量的自托管代理。

并行作业的成本是多少?

默认情况下,我们会在每个组织中为托管作业和自承载并行作业提供 免费服务层级 。 并行作业是在组织级别购买的,由组织中的所有项目共享。

对于 Microsoft 托管的并行作业,每次公共 项目最多可以运行 360 分钟 (6) 小时,最多可以运行 10 个免费的 Microsoft 托管并行作业。 创建新的Azure DevOps组织时,默认情况下不会获得此免费授权。

对于 专用项目,可以获取一个免费作业,每次最多可以运行 60 分钟。 创建新的Azure DevOps组织时,默认情况下可能不会始终获得此免费授权。

若要请求公共或专用项目的免费授予,请提交 请求

注意

需要 2-3 个工作日才能响应免费层请求。

公共项目的并行作业没有时间限制,专用项目每月有 30 小时的时间限制。

并行作业数 时间限制
公共项目 最多 10 个免费的 Microsoft 托管并行作业,每次最多可以运行 360 分钟, (6 小时) 每月没有总体时间限制
专用项目 一个免费作业,每次最多可以运行 60 分钟 每月 1,800 分钟 (30 小时)

当免费层不再足够时,可以为每个并行作业支付额外的容量。 有关每个并行作业的定价成本,请参阅Azure DevOps定价页。 付费并行作业将移除每月时间限制,并允许你运行每个作业最多 360 分钟(6 小时)。

购买 Microsoft 托管的并行作业

新组织对 Microsoft 托管代理的最大并行作业限制为 25 个。 请联系支持人员 请求限制增加,但受组织所在区域中的容量限制的约束。

购买第一个 Microsoft 托管的并行作业时,组织中的并行作业数仍然是一个。 若要能够同时运行两个作业,如果当前处于免费层,则需要购买两个并行作业。 第一次购买仅删除第一个作业的时间限制。

提示

如果管道超出最大作业超时,请尝试将管道拆分为多个作业。 有关作业的详细信息,请参阅 在管道中指定作业

我需要多少个并行作业?

当已排队的生成数和发布数超过了并行作业数时,生成和发布队列会越来越长。 如果发现队列延迟时间太长,可以根据需要购买额外的并行作业。 可以使用多种方法来检查并行作业限制和作业历史记录。

使用池消耗报告查看作业历史记录

可以使用代理池的“分析”选项卡上的“池消耗报告”查看过去 30 天内与并行作业一起绘制的运行作业和排队作业图表。 如果有排队作业积压工作,并且正在运行的作业处于并发限制,则可能需要购买更多并行作业。 有关详细信息,请参阅 池消耗报告

Microsoft-hosted agent pool historical graph

直接检查并行作业设置

首先查看组织当前使用的并行作业数,找出所需的并行作业数:

  1. 浏览到组织设置>Pipelines>重试和并行作业并行作业>。

    Location of parallel jobs in organization settings.

    URL 示例:https://{your_organization}/_admin/_buildQueue?_a=resourceLimits

  2. 查看组织中可用的并行作业的最大数量。

  3. 选择 “查看正在进行的作业 ”以显示正在主动使用可用并行作业或排队等待并行作业可用的所有生成和版本。

估算成本

简单的经验法则是:预计组织中每四到五个用户就需要一个并行作业。

在以下情况中,你可能需要多个并行作业:

  • 如果你有多个团队,并且每个团队都需要 CI,则可能需要每个团队的并行作业。
  • 如果 CI 触发器适用于多个分支,则可能需要为每个活动分支创建并行作业。
  • 如果使用一个组织或服务器开发多个应用程序,则可能需要其他并行作业:一个应用程序同时部署每个应用程序。

如何实现购买更多并行作业?

若要购买更多并行作业,请执行以下操作:

购买并行作业

在组织设置中购买更多并行作业:

  1. 登录到组织 (https://dev.azure.com/{yourorganization}) 。

  2. 选择“ gear icon组织设置”。

    Open Organization settings

  3. 在Pipelines下选择“并行作业”,然后选择“购买 Microsoft 托管作业的并行作业”或“更改”以用于自承载作业。

    manage parallel jobs image

  4. 输入所需的金额,然后 保存

有关每个并行作业的定价成本,请参阅Azure DevOps定价页

如何实现更改组织的并行作业数量?

  1. 登录到组织 (https://dev.azure.com/{yourorganization}) 。

  2. 选择“ gear icon组织设置”。

    Open Organization settings

  3. 在Pipelines下选择“并行作业”,然后选择“购买并行作业”或“更改 Microsoft 托管作业”或“更改”以用于自承载作业。

    image of manage parallel jobs

  4. 输入 Microsoft 托管或自承载作业数量越少或更大,然后选择“ 保存”。

重要

不支持托管 XAML 生成控制器。 如果组织需要运行 XAML 生成,请设置本地 生成服务器 并切换到 本地生成控制器。 有关托管 XAML 模型的详细信息,请参阅使用 XAML 开始

如何在 DevOps Services 中使用并行作业?

假设组织只有一个 Microsoft 托管的并行作业。 此作业允许用户一次集体运行一个作业。 触发其他作业时,它们将排队,并等待上一个作业完成。

如果使用发布或 YAML 管道,则仅当运行主动部署到阶段时,运行才会使用并行作业。 当发布正在等待审批或手动干预时,它不使用并行作业。

使用发布管道运行 服务器作业 或部署到 部署组 时,不会使用任何并行作业。

Simple example of parallel jobs

  1. FabrikamFiber CI 生成 102(主分支)首先开始。
  2. FabrikamFiber 版本 11 的部署由 FabrikamFiber CI 内部版本 102 完成触发。
  3. 触发 FabrikamFiber CI 生成 101(功能分支)。 该生成还无法开始,因为发布 11 的部署还在进行中。 因此,生成会保持排队状态。
  4. 发布 11 等待批准。 Fabrikam CI 内部版本 101 开始,因为等待审批的发布不使用并行作业。
  5. 发布 11 获得批准。 它仅在 Fabrikam CI 生成 101 完成后恢复。

如何使用并行作业?

例如,Team Foundation Server中的集合具有一个并行作业。 这样,该集合中的用户一次只能运行一个版本。 触发其他版本后,会排队等待上一个版本完成。

仅当发布主动部署到阶段时,发布才需要并行作业。 等待审批不会使用并行作业。 但是,在部署中间等待手动干预确实会使用并行作业。

Parallel jobs simple example

  1. FabrikamFiber 版本 10 首先部署。
  2. FabrikamFiber 版本 11 的部署在版本 10 部署完成后开始。
  3. 版本 12 排队,直到版本 11 的部署处于活动状态。
  4. 版本 11 等待审批。 版本 12 的部署开始,因为等待审批的发布不使用并行作业。
  5. 尽管版本 11 已获得批准,但它仅在版本 12 的部署完成后恢复。
  6. 版本 11 正在等待手动干预。 版本 13 无法启动,因为手动干预状态使用并行作业。

手动干预不会在 TFS 2017.1 及更新中使用作业。

单个版本中的并行处理

单个版本中的并行处理不需要其他并行作业。 只要有足够的代理,就可以同时部署到发布中的多个阶段。

例如,假设集合有三个并行作业。 可以同时运行三个以上的代理,以在发布中执行并行操作。 例如,请注意,下面有 4 个或 5 个代理正在从三个并行作业主动运行作业。

Parallel jobs with additional agents example

组织中的并行作业

例如,下面是一个具有多个 Team Foundation Servers 的组织。 他们的两个用户具有Visual Studio Enterprise订阅,只要客户将它们作为用户添加到两个服务器,就可在其所有本地服务器和每个集合中同时使用订阅,如下所述。

Parallel jobs in an organization example

确定所需的并行作业数

首先,可以查看团队是否可以使用默认拥有的并行作业。 随着排队版本数超过你拥有的并行作业数,发布队列将增长更长。 如果发现队列延迟时间太长,可以根据需要购买额外的并行作业。

简单估算

一个简单的经验规则:估计服务器中每 10 个用户都需要一个并行作业。

详细估算

在以下情况下,可能需要多个并行作业:

  • 如果你有多个团队,如果每个团队都需要 CI 生成,并且每个 CI 版本都配置为触发发布,则可能需要为每个团队创建并行作业。

  • 如果在一个集合中开发多个应用程序,则可能需要其他并行作业:一个应用程序同时部署每个应用程序。

使用Visual Studio Enterprise订阅权益

具有Visual Studio Enterprise订阅的用户将分配到 TFS 实例的用户中心内的VS Enterprise访问级别。 其中每个用户为每个集合贡献一个额外的并行作业。 可以在组织中所有 Team Foundation Servers 上使用此权益。

  1. 浏览到 服务器设置访问级别

    control panel server versus enterprise access levels

    URL 示例:http://{your_server}:8080/tfs/_admin/_licenses

  2. 在页面左侧,单击VS Enterprise

  3. 添加具有Visual Studio Enterprise订阅的用户。

添加这些用户后,其他许可证将显示在下面所述的资源限制页上。

购买其他并行作业

如果需要运行更多并行版本,可以从Visual Studio市场购买其他专用作业。 由于目前无法直接从市场为 TFS 实例购买并行作业,因此必须先为Azure DevOps组织购买并行作业。 为Azure DevOps组织购买专用作业后,请在下面所述的资源限制页上手动输入购买的并行作业数。

查看和管理并行作业

  1. 浏览到集合设置Pipelines资源限制

    Set resource limits

    URL 示例:http://{your_server}:8080/tfs/DefaultCollection/_admin/_buildQueue?_a=resourceLimits

  2. 查看或编辑购买的并行作业数。

常见问题解答

如何实现有资格获得公共项目的免费层?

如果满足以下两个条件,则有资格获得公共项目的免费层限制:

  • 管道是Azure Pipelines公共项目的一部分。
  • 管道从GitHub或Azure DevOps组织中的同一公共项目生成公共存储库。

有关如何申请免费并行作业授予的信息,请参阅 并行作业 (Microsoft 托管) 花费多少?

是否可以将并行作业分配给特定项目或代理池?

目前,无法将并行作业容量分隔或单独分配到特定的项目或代理池。 例如:

  • 在组织中购买两个并行作业。
  • 在第一个项目中启动两个运行,同时使用两个并行作业。
  • 在第二个项目中启动运行。 在完成第一个项目中的某个运行之前,该运行才会启动。

在可以使用 Azure Pipelines 的人员方面,有没有限制?

使用 Azure Pipelines 时,你可以根据需要拥有任意数量的用户。 使用Azure Pipelines没有按用户收费。 拥有 基本和利益干系人访问权限 的用户可以根据需要创作任意数量的生成和发布。

就我可以创建的生成和发布管道的数量而言,有任何限制吗?

不是。 可以免费创建数百甚至数千条管道。 可以免费注册任意数量的自承载代理。

作为Visual Studio Enterprise订阅者,是否为 TFS 和Azure Pipelines获取其他并行作业?

是。 Visual Studio Enterprise订阅者在 2017 年或更高版本Team Foundation Server获取一个并行作业,并在每个Azure DevOps Services组织中获取一个自承载并行作业,其中它们是成员。

按分钟支付托管代理的选项如何?

我们以前的一些客户仍在为托管代理制定每分钟计划。 在此计划中,在免费层后前 20 小时支付 0.05 美元,在 20 小时后支付 0.01 美元/分钟。 由于此计划中存在以下限制,可能需要考虑迁移到并行作业模型:

  • 使用按分钟计划时,一次只能运行一个作业。
  • 如果一个月内运行生成的付费时间超过 14 个小时,按分钟计划可能比并行作业模型更划算。

我将 XAML 生成控制器与我的组织配合使用。 如何收取这些费用?

可以为组织中的每个自承载并行作业注册一个 XAML 生成控制器。 你的组织至少获得一个免费的自承载并行作业,因此你可以注册一个 XAML 生成控制器,无需额外费用。 对于每个额外的 XAML 生成控制器,需要额外的自承载并行作业。

Who可以使用系统?

具有 TFS CAL 的 TFS 用户可以根据需要创作任意数量的版本。

若要批准版本,不需要 TFS CAL;任何具有 利益干系人访问权限 的用户都可以批准或拒绝发布。

是否需要并行作业才能在 TFS 上运行生成?

否,在 TFS 上,不需要并行作业来运行生成。 可以根据需要同时运行任意数量的内部版本,无需额外费用。

是否需要并行作业来管理 TFS 2017 之前的版本中的版本?

不是。

在 TFS 2015 中,只要用户拥有 TFS CAL,他们就可以在试用模式下免费管理版本。 我们称之为“试用模式”,指示我们最终会收取管理版本的费用。 尽管有此标签,但我们完全支持在 TFS 2015 中管理版本。