你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Pipelines 发布自动进行持续集成

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

下面是有关设置 Azure Pipelines 发布以自动将数据工厂部署到多个环境的指导。

要求

  • 一个已链接到 Azure DevOps Server(以前称为 Visual Studio Team Foundation Serve)或 Azure Repos 并使用 Azure 资源管理器服务终结点的 Azure 订阅。

  • 一个配置了 Azure Repos Git 集成的数据工厂。

  • 一个 Azure Key Vault,其中包含每个环境的机密。

设置 Azure Pipelines 发布

  1. Azure DevOps 中,打开配置了数据工厂的项目。

  2. 在页面左侧选择“管道”,然后选择“发布”。

    依次选择“管道”、“发布”

  3. 选择“新建管道”;如果有现有的管道,请依次选择“新建”、“新建发布管道”。

  4. 选择“空作业”模板。

    选择“空作业”

  5. 在“阶段名称”框中,输入环境的名称。

  6. 选择“添加项目”,然后选择配置了开发数据工厂的 git 存储库。 选择“默认分支”对应的存储库的发布分支。 默认情况下,此发布分支为 adf_publish。 对于“默认版本”,请选择“默认分支中的最新版本”。

    添加项目

  7. 添加 Azure 资源管理器部署任务:

    1. 在阶段视图中选择“查看阶段任务”。

      阶段视图

    2. 创建新任务。 搜索“ARM 模板部署”,然后选择“添加”。

    3. 在“部署任务”中,选择目标数据工厂的订阅、资源组和位置。 根据需要提供凭据。

    4. 在“操作”列表中,选择“创建或更新资源组”。

    5. 选择“模板”框旁边的省略号按钮 ( ... )。 浏览在配置的 git 存储库的发布分支中生成的 Azure 资源管理器模板。 在 adf_publish 分支的 <FactoryName> 文件夹中查找文件 ARMTemplateForFactory.json。 有关使用链接 ARM 模板的更多详细信息,请参阅使用 VSTS 部署链接 ARM 模板使用链接模板

    6. 选择“模板参数”框旁边的“…”,以便选择参数文件。 在 adf_publish 分支的 >FactoryName< 文件夹中查找文件 ARMTemplateParametersForFactory.json

    7. 选择“替代模板参数”框旁边的“…”,并输入目标数据工厂的所需参数值。 对于来自 Azure Key Vault 的凭据,请输入机密名称并以双引号将其括住。 例如,如果机密名称为 cred1,请为此值输入 "$(cred1)"

    8. 选择“增量”作为“部署模式”。

      警告

      在完全部署模式下,资源组中已存在但尚未在新的资源管理器模板中指定的资源将被删除。 有关详细信息,请参阅 Azure 资源管理部署模式

      数据工厂生产部署

  8. 保存发布管道。

  9. 若要触发发布,请选择“创建发布”。 若要自动创建发布,请参阅 Azure DevOps 发布触发器

    选择“创建发布”

重要

在 CI/CD 方案中,不同环境中的集成运行时 (IR) 类型必须相同。 例如,如果在开发环境中使用自承载 IR,则同一 IR 在测试和生产等其他环境中的类型也必须是自承载。 同样,如果跨多个阶段共享集成运行时,则必须在所有环境(例如开发、测试和生产)中将集成运行时配置为链接自承载。

获取 Azure Key Vault 中的机密

如果要在 Azure 资源管理器模板中传入机密,建议你将 Azure Key Vault 用于 Azure Pipelines 发布。

可通过两种方式来处理机密:

  • 将机密添加到参数文件。 有关详细信息,请参阅在部署过程中使用 Azure Key Vault 传递安全参数值

    创建上传到发布分支的参数文件的副本。 使用以下格式设置要从 Key Vault 获取的参数的值:

    {
        "parameters": {
            "azureSqlReportingDbPassword": {
                "reference": {
                    "keyVault": {
                        "id": "/subscriptions/<subId>/resourceGroups/<resourcegroupId> /providers/Microsoft.KeyVault/vaults/<vault-name> "
                    },
                    "secretName": " < secret - name > "
                }
            }
        }
    }
    

    使用此方法时,会自动从密钥保管库拉取机密。

    参数文件也需位于 publish 分支中。

  • 在上一部分所述的 Azure 资源管理器部署任务的前面添加一个 Azure Key Vault 任务

    1. 在“任务”选项卡上创建一个新任务。 搜索并添加 Azure Key Vault

    2. 在 Key Vault 任务中,选择在其中创建了密钥保管库的订阅。 根据需要提供凭据,然后选择该密钥保管库。

    添加 Key Vault 任务

向 Azure Pipelines 代理授权

如果未设置正确的权限,Azure Key Vault 任务可能失败并出现“拒绝访问”错误。 请下载发布日志,并找到 .ps1 文件,其中包含用于向 Azure Pipelines 代理授予权限的命令。 可以直接运行该命令。 也可以从文件中复制主体 ID,然后在 Azure 门户中手动添加访问策略。 GetList 是所需的最低权限。

更新活动触发器

如何安装和配置 Azure PowerShell 中的说明安装最新的 Azure PowerShell 模块。

警告

如果不使用最新版的 PowerShell 和数据工厂模块,可能会在运行命令时遇到反序列化错误。

如果尝试更新活动触发器,部署可能会失败。 若要更新活动触发器,需手动将其停止,并在部署后将其重启。 为此,可以使用 Azure PowerShell 任务:

  1. 在此发布版本的“任务”选项卡上,添加一个 Azure PowerShell 任务。 选择任务版本最新的 Azure PowerShell 版本。

  2. 选择工厂所在的订阅。

  3. 选择“脚本文件路径”作为脚本类型。 这需要将 PowerShell 脚本保存到存储库中。 以下 PowerShell 脚本可用于停止触发器:

    $triggersADF = Get-AzDataFactoryV2Trigger -DataFactoryName $DataFactoryName -ResourceGroupName $ResourceGroupName
    
    $triggersADF | ForEach-Object { Stop-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name $_.name -Force }
    

部署后,可以完成类似的步骤(使用 Start-AzDataFactoryV2Trigger 函数)来重启触发器。

数据工厂团队已提供部署前和部署后示例脚本

注意

如果只是想关闭/打开已修改的触发器,而不是在 CI/CD 期间关闭/打开所有触发器,请使用 PrePostDeploymentScript.Ver2.ps1

警告

确保在 ADO 任务中使用 PowerShell Core 来运行脚本