用于生成和发布的任务组 (经典)

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

注意

YAML 管道不支持任务组。 相反,在这种情况下,可以使用模板。 请参阅 YAML 架构参考

通过任务组,可以将已在生成或发布管道中定义的一系列任务封装到可添加到生成或发布管道的单个可重用任务中,就像任何其他任务一样。 可选择从封装任务提取参数作为配置变量,并提取任务信息的剩余部分。

新任务组会自动添加到任务目录,可以添加到其他发布和生成管道。 任务组存储在项目级别,在项目范围之外不可访问。

通过任务组,可以标准化和集中管理所有应用程序的部署步骤。 在定义中包含任务组,然后集中更改任务组时,更改将自动反映在使用任务组的所有定义中。 无需单独更改每一个定义。

在创建任务组之前...

  • 确保要包含在任务组中的所有任务都具有其参数定义为变量,例如 $ (MyVariable) ,希望在使用任务组时能够配置这些参数。 任务中使用的变量会自动提取并转换为任务组的参数。 这些配置变量的值将转换为任务组的默认值。

  • 如果为参数指定值 (而不是变量) ,该值将成为固定参数值,不能作为参数公开给任务组。

  • 在添加到生成或发布管道时,不能在任务组中配置指定值 (而不是变量) 或未为其提供值的封装任务的参数。

  • PowerShell 脚本任务) 的任务条件 (例如“仅当上一个任务失败时运行此任务”,可以在任务组中配置这些设置,这些设置随任务组一起保存。

  • 保存任务组时,可以为新任务组提供名称和说明,然后选择希望在 “任务目录 ”对话框中显示的类别。 还可以更改每个参数的默认值。

  • 对生成或发布进行排队时,将提取封装的任务,并为任务组参数输入的值应用于任务。

  • 对任务组所做的更改反映在任务组的每个实例中。

创建任务组

  1. 确保要包含的所有任务不包含任何链接参数。 执行此操作的简单方法是选择“ 取消链接整个 流程的设置”面板中的所有内容。

    取消链接所有任务的参数

  2. 在生成或发布管道中选择一系列任务,打开快捷菜单,然后选择 “创建任务组”。

    从任务的发布管道列表创建任务组

  3. 指定新任务组的名称和说明,以及要添加到的“添加任务”面板中的类别 (选项卡) 。

  4. 选择 “创建”后,将创建新的任务组,并替换管道中的所选任务。

  5. 基础任务(不包括 预定义变量)中的所有“$ (vars) ”都将显示为新创建的任务组的必需参数。

    例如,假设你有一个任务输入 $ (foobar) ,你不想参数化。 但是,创建任务组时,任务输入将转换为任务组参数“foobar”。 现在,可以将任务组参数“foobar”的默认值作为 $ (foobar) 。 这可确保在运行时,展开的任务获取其预期相同的输入。

  6. 保存更新后的管道。

管理任务组

在当前项目中创建的所有任务组都列在 Azure Pipelines“任务组”页中。

列出任务组

使用 “导出 ”快捷方式命令将任务组的副本保存为 JSON 管道,并使用 “导入 ”图标导入以前保存的任务组定义。 使用此功能在项目和企业之间传输任务组,或复制和保存任务组的副本。

选择任务组名称以打开详细信息页。

管理任务组

  • “任务” 页中,可以编辑构成任务组的任务。 对于每个封装任务,可以更改非变量参数的参数值、编辑现有参数变量或将参数值转换为变量和从变量转换参数值。 保存更改时,使用此任务组的所有定义都将选取更改。

任务组的所有变量参数都将在管道定义中显示为必需参数。 还可以设置任务组参数的默认值。

  • 在“ 历史记录 ”选项卡中,可以看到组更改的历史记录。

  • 在“ 引用 ”选项卡中,可以展开所有生成和发布管道的列表以及其他使用 (引用) 此任务组的列表。 这可用于确保更改不会对其他进程产生意外影响。

创建任务组的预览和更新版本

Azure Pipelines 和 TFS 中的所有内置任务都 进行了版本控制。 这样,生成和发布管道就可以在开发、测试和发布新版本时继续使用任务的现有版本。 在 Azure Pipelines 中,可以对自己的自定义任务组进行版本控制,以便它们的行为方式相同,并提供相同的优势。

  1. 编辑完任务组后,选择“ 另存为草稿 ”而不是 “保存”。

    将草稿更新保存到任务组

  2. 字符串 -test 追加到任务组版本号。 如果对更改感到满意,请选择 “发布草稿”。 可以选择将其发布为预览版还是生产就绪版本。

    发布任务组的草稿版本

  3. 现在可以在生成和发布过程中使用更新的任务组;通过更改现有管道中任务组的版本号或从 “添加任务 ”面板添加任务组的版本号。

    使用任务组的预览版本

    与内置任务一样,添加任务组时的默认任务是最高的非预览版本。

  4. 测试完更新的任务组后,选择 “发布预览”。 预览字符串从版本号字符串中删除。 现在,它将在定义中显示为“生产就绪”版本。

    发布任务组的预览版

  5. 在已包含此任务组的生成或发布管道中,现在可以选择新的“生产就绪”版本。 从 “添加任务”面板中添加任务 组时,会自动选择新的“生产就绪”版本。

    使用任务组的更新版本

使用任务组版本

任何任务组更新都可以是次要版本更新或主版本更新。

次要版本

行动: 编辑后直接保存任务组,而不是将其保存为草稿。

影响: 版本号不会更改。 假设你有一个任务组的版本 1.0。 可以有任意数量的次要版本更新,例如1.11.21.3等等。在管道中,任务组版本显示为1.*最新更改将自动显示在管道定义中。

原因: 这应该是任务组中的一个小更改,你期望管道使用此新更改,而无需在管道定义中编辑版本。

主版本

行动: 将任务组保存为草稿,然后创建预览,验证任务组,然后将预览发布为主版本。

影响: 任务组将提升到新版本。 假设你有一个任务组的版本 1.*。 新版本将作为等4.*发布2.*3.*。有关新版本可用性的通知显示在使用此任务组的所有管道定义中。 用户必须显式更新到管道中新版任务组。

原因: 如果发生了重大更改,可能会中断现有管道,则想要将其测试出来,并将其推出为新版本。 用户可以选择升级到新版本,或选择保持相同的版本。 此功能与常规任务版本更新相同。

但是,如果任务组更新不是中断性变更,但你希望先验证,然后强制管道使用最新更改,则可以执行以下步骤。

  1. 使用所需的更改更新任务组并将其保存为草稿。 将创建一个新的草稿任务组“<Taskgroupname-Draft>”,其中包含已完成的更改。 此草稿任务组可供你在管道中使用。
  2. 现在,可以直接在测试管道中使用此草稿任务组,而不是发布为预览版。
  3. 在测试管道中验证此新的草稿任务组,一旦确信,请返回到主任务组并执行相同的更改并直接保存。 这被视为次要版本更新。
  4. 新的更改现在将显示在使用此任务组的所有管道中。
  5. 现在可以删除草稿任务组。

帮助和支持