使用 Azure Pipelines 从应用程序配置中拉取设置
Azure 应用程序配置任务将从应用程序配置存储中拉取键值,并将其设置为 Azure 管道变量,这些变量可由后续任务使用。 此任务是对 Azure 应用程序配置推送任务的补充,后者可将配置文件中的键值推送到应用程序配置存储中。 有关详细信息,请参阅使用 Azure Pipelines 将设置推送到应用程序配置。
先决条件
- Azure 订阅 - 创建试用版订阅
- 应用配置存储 - 创建试用版订阅
- Azure DevOps 项目 - 创建试用版订阅
- “Azure 应用程序配置”任务 - 从 Visual Studio Marketplace 免费下载。
- Azure Pipelines 代理版本 2.206.1 或更高版本和 Node 版本 16 或更高版本,用于在自托管代理上运行任务。
创建服务连接
通过服务连接,可以从 Azure DevOps 项目访问 Azure 订阅中的资源。
在 Azure DevOps 中,转到包含目标管道的项目。 在左下角,选择“项目设置”。
在“管道”下,选择“服务连接”。 在右上角,选择“新建服务连接”。
在“新建服务连接”中,选择“Azure 资源管理器”。
在“身份验证方法”对话框中,选择“服务主体(自动)”以创建新的服务主体,或者选择“服务主体(手动)”以使用现有服务主体。
输入订阅、资源组,以及服务连接的名称。
如果创建了新的服务主体,请查找分配给服务连接的服务主体的名称。 在下一步中,你将向此服务主体添加新的角色分配。
访问“项目设置”>“服务连接”。
选择新服务连接。
选择“管理服务主体”。
请注意“显示名称”中的值。
添加角色分配
向任务中使用的凭据分配正确的应用配置角色分配,以便任务可以访问应用配置存储。
转到目标应用程序配置存储。
在左侧菜单中,选择“访问控制(IAM)”。
在右侧窗格中,选择“添加角色分配”。
对于“角色”,选择“应用程序配置数据读者”。 此角色允许任务在应用程序配置存储中进行读取。
选择与在上一部分创建的服务连接关联的服务主体。
选择“查看 + 分配”。
如果存储包含密钥保管库引用,请转到相关密钥保管库,并将“密钥保管库机密用户”角色分配给在上一步中创建的服务主体。 在“密钥保管库”菜单中,选择“访问策略”并确保选择 Azure 基于角色的访问控制作为权限模型。
在生成中使用
本部分介绍如何在 Azure DevOps 生成管道中使用“Azure 应用程序配置”任务。
- 通过单击“管道”>“管道”,导航到“生成管道”页。 有关生成管道的文档,请参阅创建你的第一个管道。
- 如果要创建新的“生成管道”,则在该过程的最后一步,在“检查”选项卡上,选择管道右侧的“显示助手” 。
- 如果使用的是现有的“生成管道”,请单击右上角的“编辑”按钮。
- 搜索“Azure 应用程序配置”任务。
- 配置任务的必要参数,以便从应用程序配置存储中拉取键值。 参数说明在下面的“参数”部分以及每个参数旁边的工具提示中提供。
- 将“Azure 订阅”参数设置为你在前面步骤中创建的服务连接的名称。
- 将“应用程序配置终结点”设置为应用程序配置存储的终结点。
- 保留其余参数的默认值。
- 保存并将一个生成排入队列。 生成日志将显示在执行任务期间发生的任何故障。
在发布中使用
本部分介绍如何在 Azure DevOps 发布管道中使用“Azure 应用程序配置”任务。
- 通过选择“管道”>“发布”,导航到“发布管道”页。 有关发布管道的文档,请参阅发布管道。
- 选择现有的发布管道。 如果没有,请单击“新建管道”创建一个新的发布管道。
- 选择右上角的“编辑”按钮以编辑发布管道。
- 从“任务”下拉列表中,选择要向其添加任务的“阶段” 。 可在此处找到有关阶段的详细信息。
- 单击要向其中添加新任务的作业旁的 +。
- 搜索“Azure 应用程序配置”任务。
- 配置任务内的必要参数,以便从应用程序配置存储中拉取键值。 参数说明在下面的“参数”部分以及每个参数旁边的工具提示中提供。
- 将“Azure 订阅”参数设置为你在前面步骤中创建的服务连接的名称。
- 将“应用程序配置终结点”设置为应用程序配置存储的终结点。
- 保留其余参数的默认值。
- 保存并将一个发布排入队列。 发布日志将显示任务执行过程中遇到的任何故障。
参数
“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 标签的相同键。