我已在https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment的帮助下使用Azure DevOps CI / CD管道实现了Azure ADF管道部署过程的自动化(即)将管道从DEV部署到PROD环境ADF。我正在使用ADF的ARM模板将管道从一个环境部署到另一个环境。因此,我将有一个对应于每个环境(Dev / Prod)的单独的ARM_Parameter.json。 问题在于,每个ADF管道可能都带有很少的基本paramere,因为它们没有被参数化,因此在parameter.json中将不可用。你们能帮我在使用CI / CD管道进行的自动ADF管道部署过程中,以自动方式用每条ADF管道下的“基本参数”部分中的PROD值替换Dev值吗?
答案 0 :(得分:1)
我看到两个选择:
答案 1 :(得分:1)
您可以使用Custom parameter with ARM template。 管道的自定义参数如下所示:
"Microsoft.DataFactory/factories/pipelines": {
"properties": {
"parameters": {
"RUN_ENVIRONMENT": "=:-:string"
}
}
},
答案 2 :(得分:0)
在基本参数部分中用PROD值替换Dev值
根据您的屏幕截图,RUN_ENVIRONMENT
是管道的参数,这意味着在转换为ARM模板时,其格式如下:
"resources": [
{
....
....
"properties": {
"parameters": {
"RUN_ENVIRONMENT": {
"type": "string",
"defaultValue": "pro"
}
},...
},...
}
]
在ARM部署任务中不能使用Override template parameters
替换它。因为它将提示The template parameters 'environment' in the parameters file are not valid; they are not present in the original template and can therefore not be provided at deployment time.
要解决此错误,只需安装一个extension并将Replace token
任务添加到管道中,然后再部署ARM任务。并且此任务将在构建运行时期间替换内容的值:
答案 3 :(得分:0)
还有另一种从主(协作)分支发布ADF的方法。 您可以为JSON文件(ADF对象)中的每个单个节点(属性)定义(替换)值。 因为您可以为每个环境(阶段)提供一个单独的CSV配置文件,所以它将解决您的问题。
CSV配置文件(config-stage-UAT.csv
)的示例:
type,name,path,value
pipeline,PL_CopyMovies,activities[0].outputs[0].parameters.BlobContainer,UAT
然后只需在PowerShell中运行这样的cmdlet:
Publish-AdfV2FromJson -RootFolder "$RootFolder" -ResourceGroupName "$ResourceGroupName" -DataFactoryName "$DataFactoryName" -Location "$Location" -Stage "stage-UAT"
检查一下: this documentation(PowerShell模块)