【问题标题】:ADF Pipeline trigger deployment on DevOpsADF Pipeline 在 DevOps 上触发部署
【发布时间】:2021-08-12 10:24:44
【问题描述】:

我正在从我的 adf-dev 到 adf-staging 环境进行一些初始 ADF 部署。在 MS 文档中它说:

如果您尝试更新活动触发器,部署可能会失败。要更新活动触发器,您需要手动停止它们,然后在部署后重新启动它们。

这是否意味着我需要在部署前/部署后关闭我的开发或暂存触发器?

第二期。我需要安排同一组触发器在 dev (sat) 和 staging (sun) 的不同日期运行。我是否需要为每个环境分别制作一组触发器,还是可以在部署期间为现有触发器重写触发器计划?

【问题讨论】:

    标签: azure-devops azure-data-factory azure-data-factory-2


    【解决方案1】:

    您需要在开始部署之前停止暂存触发器,并在部署完成后重新启动。

    此页面有一个用于停止触发器的 PowerShell 脚本:https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment#updating-active-triggers

    您还可以使用自定义 petameters 配置文件来更新您的触发器设置:https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment#triggers

    要参数化 Arm 模板中的触发器部署,首先这里是一个在特定日期运行的示例每周触发器:

    {
    "name": "OnceAWeekTrigger",
    "properties": {
        "annotations": [],
        "runtimeState": "Stopped",
        "pipelines": [],
        "type": "ScheduleTrigger",
        "typeProperties": {
            "recurrence": {
                "frequency": "Week",
                "interval": 1,
                "startTime": "2021-05-25T22:59:00Z",
                "timeZone": "UTC",
                "schedule": {
                    "weekDays": [
                        "Sunday"
                    ]
                }
            }
        }
    }
    }
    

    如下创建一个arm-template-parameters-definition.json 文件:

    {
    
        "Microsoft.DataFactory/factories/triggers": {
            "properties": {
                "typeProperties": {
                    "recurrence": {
                        "schedule": {
                            "weekDays": "=:-weekDays:array"
                        }
                    }
                }
            }
        }
    }
    

    此文件指定您要参数化schedule_weekDays 属性。

    运行 ADFUtilities 导出功能后:

    npm run build export c:\git\adf /subscriptions/<subscriptionid>/resourceGroups/datafactorydev/providers/Microsoft.DataFactory/factories/<datafactory_name> "ArmTemplate"
    

    您现在获得了参数化如下触发器属性的 arm 模板:

      ...  {
            "name": "[concat(parameters('factoryName'), '/OnceAWeekTrigger')]",
            "type": "Microsoft.DataFactory/factories/triggers",
            "apiVersion": "2018-06-01",
            "properties": {
                "annotations": [],
                "runtimeState": "Stopped",
                "pipelines": [],
                "type": "ScheduleTrigger",
                "typeProperties": {
                    "recurrence": {
                        "frequency": "Week",
                        "interval": 1,
                        "startTime": "2021-05-25T22:59:00Z",
                        "timeZone": "UTC",
                        "schedule": {
                            "weekDays": "[parameters('OnceAWeekTrigger_weekDays')]"
                        }
                    }
                }
            }, ...
    

    参数文件ArmTemplate\ARMTemplateParametersForFactory.json如下:

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "factoryName": {
                "value": "factory_name"
            },
            "OnceAWeekTrigger_weekDays": {
                "value": [
                    "Sunday"
                ]
            }
        }
    }
    

    然后,您可以通过修改 OnceAWeekTrigger_weekDays 的数组值,为一周中的不同日子创建不同的参数文件和登台

    【讨论】:

    • 能否提供参数配置的示例模板?我认为我在部署任务的参数覆盖部分中没有看到任何频率/间隔的自定义触发参数。您是否必须显式设置参数化触发器?
    • 我添加了一个示例,用于为触发器的 arm 模板部署参数化 weekDays 属性。
    猜你喜欢
    • 2019-12-15
    • 2021-06-09
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多