关于 Azure Pipelines 的资源

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

资源是管道外部的管道使用的任何内容。

资源提供以下优势:

  • 跨管道共享安全文件或密码等内容的方法。
    • 使用资源进行共享的示例包括共享变量组、安全文件和服务连接。 在所有情况下,都是通过资源来使管道能够访问和使用某些内容。
  • 一种通过访问检查和其他限制来增强安全性的工具。
    • 例如,可以将服务连接限制为仅在一个管道上运行。 还可以确保仅在完成手动审批检查后才能从管道访问存储库。
  • 通过多种方式改善管道的可跟踪性并更轻松地排查环境问题。
    • 例如,可以查看部署到环境的最后一次运行的编号。

跨管道共享资源

通过在管道 UI 中配置资源来跨管道共享资源。 然后,在任务中引用这些资源。 还可以使用 resources YAML 管道语法访问某些共享资源。

使用管道 UI 共享资源的示例包括共享安全文件变量组服务连接。 使用 resources 语法的示例包括访问管道本身、存储库和包。

在管道中使用资源的方式取决于管道类型和资源类型。

对于 YAML 管道:

  • 服务连接和安全文件直接用作任务的输入,无需预先声明。
  • 变量组使用 group 语法。
  • 管道和存储库使用 resources 语法。

例如,若要在管道中使用变量组,请在“管道”>“库”中添加变量。 然后,可以使用 variables 语法在 YAML 管道中引用变量组。

variables:
- group: my-variable-group

若要使用 resources 语法从你的管道调用另一个管道,请引用 pipelines

resources:
  pipelines:
  - pipeline: SmartHotel-resource # identifier for the resource (used in pipeline resource variables)
    source: SmartHotel-CI # name of the pipeline that produces an artifact

使用资源增强安全性

可以通过指定资源的使用方式以及如何防止未经授权的访问来增强管道的安全性。

(仅对于 YAML 管道而言)将资源设置为受保护或开放。 保护某个资源后,可以应用审批和检查来仅限特定的用户和 YAML 管道对其进行访问。 受保护资源包括服务连接、代理池、环境、存储库、变量组和安全文件。

资源 如何使用资源? 如何防止非预期的管道使用此资源?
服务连接 由 YAML 文件中使用服务连接作为输入的任务使用。 使用检查和管道权限进行保护。 检查和管道权限由服务连接用户控制。 资源所有者可以控制哪些管道可以访问服务连接。 还可以使用管道权限来仅限特定的 YAML 管道和所有经典管道进行访问。
变量组中的机密变量 在管道或作业中使用变量组需要遵循特殊的语法。 像添加服务连接一样添加变量组。 使用检查和管道权限进行保护。 检查和管道权限由变量组用户控制。 资源所有者可以控制哪些管道可以访问变量组。 还可以使用管道权限来仅限特定的 YAML 管道和所有经典管道进行访问。
安全文件 安全文件由任务(例如“下载安全文件”任务)使用。 使用检查和管道权限进行保护。 检查和管道权限由安全文件用户控制。 资源所有者可以控制哪些管道可以访问安全文件。 还可以使用管道权限来仅限特定的 YAML 管道和所有经典管道进行访问。
代理池 使用代理池运行作业需要遵循特殊的语法。 使用检查和管道权限进行保护。 检查和管道权限由代理池用户控制。 资源所有者可以控制哪些管道可以访问代理池。 还可以使用管道权限来仅限特定的 YAML 管道和所有经典管道进行访问。
environments 在 YAML 中使用环境需要遵循特殊的语法。 使用由环境用户控制的检查和管道权限进行保护。 还可以使用管道权限来仅限特定的环境进行访问。
存储库 如果作业访问令牌有权访问存储库,则脚本可以克隆存储库。 使用存储库参与者控制的检查和管道权限进行保护。 存储库所有者可以限制所有权。
工件、工作项、管道 管道工件是资源,但 Azure Artifacts 不是。 如果作业访问令牌有权访问源,则脚本可以下载工件。 可以在 resources 节中将管道工件声明为资源 – 目的主要是为了在新工件可用时触发管道,或者在管道中使用该工件。 工件和工作项有自身的权限控制。 不支持为源设置检查和管道权限。
容器Webhook 这些资源位于 Azure DevOps 生态系统之外,其访问权限由服务连接控制。 在 YAML 管道中使用所有这三种类型的资源需要遵循特殊的语法。 使用由服务连接用户控制的检查和管道权限进行保护。

使用资源实现可跟踪性

环境支持以下资源类型:

后续步骤