我正在尝试为Azure数据工厂创建Azure DevOps发布管道。
我遵循了Microsoft(https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment)颇为晦涩的指南,即向发布(https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment#use-custom-parameters-with-the-resource-manager-template)时生成的ARM模板添加其他参数。
在master分支的路由中创建了arm-template-parameters-definition.json
文件。当我进行发布时,ARMTemplateParametersForFactory.json
分支中的adf_publish
保持完全不变。我尝试了许多配置。
我已经在Data Factory中定义了一些管道参数,并希望它们可以在我的部署管道中进行配置。对我来说似乎是一个明显的要求。
我错过了一些基本的东西吗?请帮忙!
JSON如下:
{
"Microsoft.DataFactory/factories/pipelines": {
"*": {
"properties": {
"parameters": {
"*": "="
}
}
}
},
"Microsoft.DataFactory/factories/integrationRuntimes": {
"*": "="
},
"Microsoft.DataFactory/factories/triggers": {},
"Microsoft.DataFactory/factories/linkedServices": {},
"Microsoft.DataFactory/factories/datasets": {}
}
答案 0 :(得分:2)
我已经为此苦苦挣扎了几天,却没有找到很多信息,所以在这里我找到了。您必须将arm-template-parameters-definition.json放在协作分支的已配置根文件夹中:
所以在我的示例中,它必须看起来像这样:
如果在单独的分支中工作,则可以通过从数据工厂下载手臂模板来测试配置。当您更改参数定义时,必须重新加载浏览器屏幕(f5)以刷新配置。
如果您真的想对所有管道中的所有参数进行参数化,则应该可以执行以下操作:
"Microsoft.DataFactory/factories/pipelines": {
"properties": {
"parameters":{
"*":{
"defaultValue":"="
}
}
}
}
我更喜欢指定要参数化的参数:
"Microsoft.DataFactory/factories/pipelines": {
"properties": {
"parameters":{
"LogicApp_RemoveFileFromADLSURL":{
"defaultValue":"=:-LogicApp_RemoveFileFromADLSURL:"
},
"LogicApp_RemoveBlob":{
"defaultValue":"=:-LogicApp_RemoveBlob:"
}
}
}
}
答案 1 :(得分:1)
仅在Simon的出色回答之上加以澄清。如果您具有非标准的git层次结构(即,将根目录移至子文件夹,如我在下面使用“源”所做的那样),则当文档引用“ repo根目录”时可能会造成混淆。希望此图对您有所帮助。
答案 2 :(得分:0)
以下是消除混乱的必要步骤:
您的ARMTemplateParametersForFactory.json随后将被更新。
答案 3 :(得分:0)
我遇到过类似的问题,ARMTemplateParametersForFactory.json
文件在发布和更改arm-template-parameters-definition.json
时都不会更新。
我认为可以通过执行以下操作来强制更新Publish分支:
ARMTemplateParametersForFactory.json
。验证自定义参数.json语法的最简单方法似乎是通过导出ARM模板,就像Simon提到的那样。
答案 4 :(得分:0)
您有一个正确的想法,但是arm-template-parameters-definition.json文件需要遵循要参数化的元素的层次结构。
这是我要参数化的管道活动。 “ url”应根据其部署环境而改变
{
"name": "[concat(parameters('factoryName'), '/ExecuteSPForNetPriceExpiringContractsReport')]",
"type": "Microsoft.DataFactory/factories/pipelines",
"apiVersion": "2018-06-01",
"properties": {
"description": "",
"activities": [
{
"name": "NetPriceExpiringContractsReport",
"description": "Passing values to the Logic App to generate the CSV file.",
"type": "WebActivity",
"typeProperties": {
"url": "[parameters('ExecuteSPForNetPriceExpiringContractsReport_properties_1_typeProperties')]",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": {
"resultSet": "@activity('NetPriceExpiringContractsReportLookup').output"
}
}
}
]
}
}
这是arm-template-parameters-definition.json文件,它将该URL转换为参数。
{
"Microsoft.DataFactory/factories/pipelines": {
"properties": {
"activities": [{
"typeProperties": {
"url": "-::string"
}
}]
}
},
"Microsoft.DataFactory/factories/integrationRuntimes": {},
"Microsoft.DataFactory/factories/triggers": {},
"Microsoft.DataFactory/factories/linkedServices": {
"*": "="
},
"Microsoft.DataFactory/factories/datasets": {
"*": "="
}
}
因此,基本上在ARM模板的管道中,它会在JSON中查找属性->活动-> typeProperties-> url并对其进行参数化。