这个问题将没有任何代码,因为到目前为止我还没有找到任何可能的方法,但是甚至没有直接的不,这不可能。
Azure数据工厂使用 adf_publish 分支作为母版上的官方分支。 当用户在GUI上单击发布时,ADF会将所有管道,触发器,链接的服务等的定义发布到此adf_publish分支。
我需要以编程方式执行此操作。我不希望有人去ADF门户网站本身并单击“发布”按钮,以便正确更新adf_publish分支。我需要知道是否有一些Powershell代码(或Azure Devops管道中的步骤)允许我执行此操作。预先感谢!
更新:
在凯文(Kevin)回答以下之后,我尝试使用建议的powershell脚本进行尝试,并且似乎成功了,但不幸的是,它似乎没有执行应有的功能。每当我尝试从ADF门户进行“发布”时,都会看到它从协作分支(主)收集更改,并尝试将其合并到Adf_Publish分支中。下图是一个示例,其中列出了将要合并的所有更改。
因此,从理论上讲,powershell脚本应该执行相同的操作,这就是我试图达到的目的,而似乎却什么也没做:
我想念什么吗?
答案 0 :(得分:1)
您可以在Github中引用this ticket。
您可以安装Az.DataFactory
和azure.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),这意味着-第一个原始问题。
查看日志的屏幕截图:
PowerShell模块找不到任何对象,这很可能意味着您向ADF提供了错误的位置(文件夹)。
请仔细阅读documentation,并确保在执行Publish-AdfV2FromJson
cmdlet时传递正确的文件夹。
另外,请记住,该工具从代码master
或您选择的另一个协作分支部署ADF。该模块无关根本不在adf_publish
分支上发生什么。单击PUBLISH时,该分支的更改由ADF服务完成,但是当您选择通过azure.datafactory.tools或DevOps 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/ 阅读更多相关信息
答案 4 :(得分:0)
对 Azure 数据工厂的发布进行了改进。
以前,您需要从 UI 手动“发布”数据工厂,这与自动化概念不符。
现在您可以使用 ADFUtilities NPM 包(最好在您的构建管道中),它将验证所有资源并生成 ARM 模板,这些模板又可以在发布管道中用于您的自动化部署。有关完整的详细信息和配置步骤,请参阅以下链接。
https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment-improvements