在我们的一个客户站点,我们使用 Azure 数据工厂 (ADF) 来支持多个项目,按项目将管道和数据集部分组织到文件夹中。但是,我们在部署过程中遇到了影响共享环境中项目独立性的问题。
这是问题场景:
想象两个开发人员,每个人都在不同的项目上工作,项目 A 和项目 B。
当开发人员 2 准备将项目 B 升级到 UAT 环境时,当前设置会无意中将项目 A 和项目 B 的更改都部署到 UAT。这种设置是有问题的,因为 UAT 环境无意中收到了来自项目 A 的更新,而项目 A 应该保持隔离。
我们当前的部署流程使用 ARM 模板,特别是 Azure 资源组部署任务,但此设置缺乏有效分离特定于项目的更改的精细控制。
- task: AzureResourceGroupDeployment@2
displayName: 'Azure Deployment:Create Or Update Resource Group Data Factory'
inputs:
azureSubscription: 'AZURE-BIC-TST-WEU'
resourceGroupName: rgweucgitdwhreports
location: 'west europe'
csmFile: '$(drop)/dfweucgiddwhreports/ARMTemplateForFactory.json'
csmParametersFile: '$(drop)/dfweucgiddwhreports/ARMTemplateParametersForFactory_WEU_TST.json'
timeoutInMinutes: 60
我如何设想(不确定是否可能)在运行发布管道之前,用户应该为管道变量提供值(下图用于可视化)
如果用户给出值“ProjectB”,它应该只查看 adf 中 ProjectB 所在的文件夹(下图)
P.S 我知道对于很多事情(例如链接服务、IR 等)来说这是无法实现的,但如果我能够设法分离管道和数据集,这将已经是一大进步。
但我也期待听到更多可以做到这一点的选择!
根据设计,数据工厂不允许择优挑选提交或选择性发布资源。 发布将包括数据工厂中所做的所有更改。
此外,当您使用
AzureResourceGroupDeployment@2
任务部署 ADF 时,您是通过 ARM 模板进行部署。此 ARM 模板是从 ADF 生成的,包含 ADF 中的所有资源。 ARM模板不支持部分部署,因此AzureResourceGroupDeployment@2
任务无法部署模板中的部分资源。这并不是“此设置缺乏有效分离特定于项目的更改的精细控制”,而是 ARM 模板就是这样工作的。
总而言之,您无法将 ADF 中的部分资源从一个环境部署到另一个环境。