通过Powershell或Azure Devops管道步骤在Azure数据工厂上以编程方式“发布”

时间:2020-10-27 15:20:55

标签: azure powershell azure-devops

这个问题将没有任何代码,因为到目前为止我还没有找到任何可能的方法,但是甚至没有直接的不,这不可能

Azure数据工厂使用 adf_publish 分支作为母版上的官方分支。 当用户在GUI上单击发布时,ADF会将所有管道,触发器,链接的服务等的定义发布到此adf_publish分支。

我需要以编程方式执行此操作。我不希望有人去ADF门户网站本身并单击“发布”按钮,以便正确更新adf_publish分支。我需要知道是否有一些Powershell代码(或Azure Devops管道中的步骤)允许我执行此操作。预先感谢!

更新

在凯文(Kevin)回答以下之后,我尝试使用建议的powershell脚本进行尝试,并且似乎成功了,但不幸的是,它似乎没有执行应有的功能。每当我尝试从ADF门户进行“发布”时,都会看到它从协作分支(主)收集更改,并尝试将其合并到Adf_Publish分支中。下图是一个示例,其中列出了将要合并的所有更改。

enter image description here

因此,从理论上讲,powershell脚本应该执行相同的操作,这就是我试图达到的目的,而似乎却什么也没做:

enter image description here

我想念什么吗?

5 个答案:

答案 0 :(得分:1)

您可以在Github中引用this ticket

您可以安装Az.DataFactoryazure.datafactory.tools PowerShell模块,然后可以运行Publish-AdfV2FromJson方法进行发布。

以下是Azure Devops示例:

variables:
  ResourceGroupName: 'rg-devops-factory'
  DataFactoryName: 'SQLPlayerDemo'
steps:
- powershell: |
   Install-Module Az.DataFactory -MinimumVersion "1.7.0" -Force
   Install-Module -Name "azure.datafactory.tools" -Force
   Import-Module -Name "azure.datafactory.tools" -Force
  displayName: 'PowerShell Script'
steps:
- task: AzurePowerShell@4
  displayName: 'Azure PowerShell script: InlineScript'
  inputs:
    azureSubscription: 'Subscription'
    ScriptType: InlineScript
    Inline: |
     Publish-AdfV2FromJson -RootFolder "$(System.DefaultWorkingDirectory)/_ArtifactName_/" -ResourceGroupName "$(ResourceGroupName)" -DataFactoryName "$(DataFactoryName)" -Location "$(Location)" -Stage "$(Release.EnvironmentName)"

    FailOnStandardError: true
    azurePowerShellVersion: LatestVersion

有关更多详细信息,请参阅this introduction document

另一方面,您可以使用开箱即用的任务:Deploy Azure Data Factory by SQLPlayer extension中的Publish Azure Data Factory

答案 1 :(得分:0)

在现实世界中,这绝对是可能的,并且是一个预期的要求。请通过Continuous integration and delivery in Azure Data Factory。简而言之,将其作为答案太长了,因此您必须详细阅读:)。以下是该场景的简短引用,可让您付费:

  • 使用Azure Repos Git创建并配置开发数据工厂。所有开发人员均应具有创作数据的权限 工厂资源,例如管道和数据集。

  • 开发者creates a feature branch 做出改变。他们尽最大努力调试管道运行 近期变动。有关如何调试管道运行的更多信息, 参见Iterative development and debugging with Azure Data Factory

  • 开发人员对更改满意后,便创建从其功能分支到主服务器或协作的拉取请求 分支机构以使他们的更改得到同行的审查。

  • 批准拉取请求并将更改合并到master分支后,更改将发布到开发工厂。

  • 当团队准备将更改部署到测试或UAT(用户接受测试)工厂时,团队将转到其Azure管道 发行并部署所需版本的开发工厂到 UAT。此部署是Azure Pipelines任务的一部分 并使用Resource Manager模板参数来应用适当的 配置。

  • 在测试工厂中验证更改后,使用管道的下一个任务将其部署到生产工厂 释放。

要在运行于master的CI构建中从master分支到adf_publish分支的合并过程自动化,可以查看Run Git commands in a script。这会从功能合并到主功能,但您将相反。

答案 2 :(得分:0)

@Tarta,这里融合了很多东西。 我不想在这里回答所有问题,仅让我关注您尝试使用的工具(azure.datafactory.tools),这意味着-第一个原始问题。 查看日志的屏幕截图:
enter image description here
PowerShell模块找不到任何对象,这很可能意味着您向ADF提供了错误的位置(文件夹)。 请仔细阅读documentation,并确保在执行Publish-AdfV2FromJson cmdlet时传递正确的文件夹。
另外,请记住,该工具从代码master或您选择的另一个协作分支部署ADF。该模块无关根本不在adf_publish分支上发生什么。单击PUBLISH时,该分支的更改由ADF服务完成,但是当您选择通过azure.datafactory.toolsDevOps extension从代码进行部署时,则不必担心。 另外,我希望我准备的页面可以帮助您一点点理解从代码(而不是从adf_publish)部署ADF的整个概念: https://sqlplayer.net/adftools/

答案 3 :(得分:0)

最近,Microsoft 宣布他们现在支持使用 ADFUtilities NPM (@microsoft/azure-data-factory-utilities) 库和 Azure DevOps 构建管道自动发布 Azure 数据工厂。

https://azureops.org/articles/automated-azure-data-factory-publish/ 阅读更多相关信息 enter image description here

答案 4 :(得分:0)

对 Azure 数据工厂的发布进行了改进。

以前,您需要从 UI 手动“发布”数据工厂,这与自动化概念不符。

现在您可以使用 ADFUtilities NPM 包(最好在您的构建管道中),它将验证所有资源并生成 ARM 模板,这些模板又可以在发布管道中用于您的自动化部署。有关完整的详细信息和配置步骤,请参阅以下链接。

https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment-improvements