使用 Azure Pipelines 从应用程序配置中拉取设置

Azure 应用程序配置任务将从应用程序配置存储中拉取键值,并将其设置为 Azure 管道变量,这些变量可由后续任务使用。 此任务是对 Azure 应用程序配置推送任务的补充,后者可将配置文件中的键值推送到应用程序配置存储中。 有关详细信息,请参阅使用 Azure Pipelines 将设置推送到应用程序配置

先决条件

创建服务连接

通过服务连接,可以从 Azure DevOps 项目访问 Azure 订阅中的资源。

  1. 在 Azure DevOps 中,转到包含目标管道的项目。 在左下角,选择“项目设置”。

  2. 在“管道”下,选择“服务连接”。 在右上角,选择“新建服务连接”。

  3. 在“新建服务连接”中,选择“Azure 资源管理器”。

    屏幕截图显示从新的服务连接下拉列表中选择“Azure 资源管理器”。

  4. 在“身份验证方法”对话框中,选择“服务主体(自动)”以创建新的服务主体,或者选择“服务主体(手动)”以使用现有服务主体

  5. 输入订阅、资源组,以及服务连接的名称。

如果创建了新的服务主体,请查找分配给服务连接的服务主体的名称。 在下一步中,你将向此服务主体添加新的角色分配。

  1. 访问“项目设置”>“服务连接”。

  2. 选择新服务连接。

  3. 选择“管理服务主体”。

  4. 请注意“显示名称”中的值。

    屏幕截图显示服务主体显示名称。

添加角色分配

向任务中使用的凭据分配正确的应用配置角色分配,以便任务可以访问应用配置存储。

  1. 转到目标应用程序配置存储。

  2. 在左侧菜单中,选择“访问控制(IAM)”。

  3. 在右侧窗格中,选择“添加角色分配”。

    屏幕截图显示“添加角色分配”按钮。

  4. 对于“角色”,选择“应用程序配置数据读者”。 此角色允许任务在应用程序配置存储中进行读取。

  5. 选择与在上一部分创建的服务连接关联的服务主体。

    屏幕截图显示“添加角色分配”对话框。

  6. 选择“查看 + 分配”。

  7. 如果存储包含密钥保管库引用,请转到相关密钥保管库,并将“密钥保管库机密用户”角色分配给在上一步中创建的服务主体。 在“密钥保管库”菜单中,选择“访问策略”并确保选择 Azure 基于角色的访问控制作为权限模型。

在生成中使用

本部分介绍如何在 Azure DevOps 生成管道中使用“Azure 应用程序配置”任务。

  1. 通过单击“管道”>“管道”,导航到“生成管道”页。 有关生成管道的文档,请参阅创建你的第一个管道
    • 如果要创建新的“生成管道”,则在该过程的最后一步,在“检查”选项卡上,选择管道右侧的“显示助手” 。 屏幕截图显示新管道的“显示助手”按钮。
    • 如果使用的是现有的“生成管道”,请单击右上角的“编辑”按钮。 屏幕截图显示现有管道的“编辑”按钮。
  2. 搜索“Azure 应用程序配置”任务。 屏幕截图显示“添加任务”对话框,其中搜索框中有“Azure 应用配置”。
  3. 配置任务的必要参数,以便从应用程序配置存储中拉取键值。 参数说明在下面的“参数”部分以及每个参数旁边的工具提示中提供。
    • 将“Azure 订阅”参数设置为你在前面步骤中创建的服务连接的名称。
    • 将“应用程序配置终结点”设置为应用程序配置存储的终结点。
    • 保留其余参数的默认值。 屏幕截图显示“应用配置”任务参数。
  4. 保存并将一个生成排入队列。 生成日志将显示在执行任务期间发生的任何故障。

在发布中使用

本部分介绍如何在 Azure DevOps 发布管道中使用“Azure 应用程序配置”任务。

  1. 通过选择“管道”>“发布”,导航到“发布管道”页。 有关发布管道的文档,请参阅发布管道
  2. 选择现有的发布管道。 如果没有,请单击“新建管道”创建一个新的发布管道。
  3. 选择右上角的“编辑”按钮以编辑发布管道。
  4. 从“任务”下拉列表中,选择要向其添加任务的“阶段” 。 可在此处找到有关阶段的详细信息。 屏幕截图显示“任务”下拉列表中选定的阶段。
  5. 单击要向其中添加新任务的作业旁的 +屏幕截图显示作业旁的“+”按钮。
  6. 搜索“Azure 应用程序配置”任务。 屏幕截图显示“添加任务”对话框,其中搜索框中有“Azure 应用配置”。
  7. 配置任务内的必要参数,以便从应用程序配置存储中拉取键值。 参数说明在下面的“参数”部分以及每个参数旁边的工具提示中提供。
    • 将“Azure 订阅”参数设置为你在前面步骤中创建的服务连接的名称。
    • 将“应用程序配置终结点”设置为应用程序配置存储的终结点。
    • 保留其余参数的默认值。
  8. 保存并将一个发布排入队列。 发布日志将显示任务执行过程中遇到的任何故障。

参数

“Azure 应用程序配置”任务使用以下参数:

  • Azure 订阅:包含可用 Azure 服务连接的下拉列表。 若要更新和刷新可用 Azure 服务连接的列表,请按文本框右侧的“刷新 Azure 订阅”按钮。
  • 应用程序配置终结点:用于加载所选订阅下的可用配置存储终结点的下拉列表。 若要更新和刷新可用配置存储终结点的列表,请按文本框右侧的“刷新应用程序配置终结点”按钮。
  • 选择模式:指定如何选择从配置存储中读取的键值。 “默认”选择模式允许使用键和标签筛选器。 “快照”选择模式允许从快照中选择键值。 默认值为“默认”。
  • 键筛选器:该筛选器可用于选择从 Azure 应用程序配置中请求哪些键值。 值 * 将选择所有键值。 有关详细信息,请参阅查询键值
  • 标签:指定从应用程序配置存储中选择键值时应使用的标签。 如果未提供标签,则将检索带有 no 标签的键值。 不允许使用以下字符:, *。
  • 快照名称:指定应在 Azure 应用程序配置中检索键值的快照。
  • 剪裁键前缀:指定在将应用程序配置键设置为变量之前,应从中剪裁的一个或多个前缀。 多个前缀可以用换行符分隔。
  • 禁止显示已重写键的警告:默认值未选中。 指定在重写现有键时是否显示警告。 如果期望从应用程序配置下载的键值与管道变量中存在的键重叠,请启用此选项。

在后续任务中使用键值

从应用程序配置中提取的键值将设置为管道变量,可以作为环境变量进行访问。 环境变量的键是剪裁前缀后从应用程序配置中检索的键值的键(如果指定)。

例如,如果后续任务运行 PowerShell 脚本,则它可能会使用包含“myBuildSetting”键的键值,如下所示:

echo "$env:myBuildSetting"

值将输出到控制台。

注意

将解析应用程序配置中的 Azure Key Vault 引用,并将其设置为机密变量。 在 Azure 管道中,会从日志中屏蔽机密变量。 它们不会作为环境变量传递到任务中,而是作为输入传递。

疑难解答

如果发生意外错误,可以通过将管道变量 system.debug 设置为 true 来启用调试日志。

FAQ

如何根据多个键和标签撰写配置?

有时可能需要根据多个标签撰写配置,例如 default 和 dev。 可以在一个管道中使用多个应用程序配置任务来实现此方案。 任务在后面步骤中提取的键值将取代前面步骤中的所有值。 在上述示例中,可以使用一个任务来选择具有 default 标签的键值,而第二个任务可以选择具有 dev 标签的键值。 具有 dev 标签的键将替代具有 default 标签的相同键。