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

Azure 数据工厂中的源代码管理

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

提示

Microsoft Fabric 中的 Data Factory 是下一代 Azure 数据工厂,具有更加简化的架构、内置人工智能和新功能。 如果不熟悉数据集成,请从Fabric数据工厂开始。 现有 ADF 工作负载可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。

默认情况下,Azure 数据工厂用户界面体验 (UX) 直接面向数据工厂服务。 此体验具有以下限制:

  • 数据工厂服务不包括存储所做的更改的 JSON 实体的存储库。 保存更改的唯一方法是通过“全部发布”按钮将所有更改都直接发布到数据工厂服务。
  • 数据工厂服务未优化协作和版本控制。
  • 部署Data Factory所需的Azure 资源管理器(ARM)模板并不包含在内。

为了提供更好的创作体验,Azure 数据工厂允许使用Azure Repos或GitHub配置 Git 存储库。 Git 是一个支持简化变更跟踪和协作的版本控制系统。 本文概述了如何在Git仓库中配置和工作,并重点介绍了最佳实践和故障排除指南。

还可以参考 Azure 数据工厂 中的连续集成和交付 (CI/CD),以详细了解更大的 CI/CD 模式,其中源代码管理是关键方面。

注意

GitHub 公共支持现已在 Azure Gov 和由 21Vianet 运营的 Microsoft Azure 上提供。 更多信息请参见 公告博客。

若要详细了解如何Azure 数据工厂与 Git 集成,请观看以下 15 分钟的教程视频:

Git 集成的优点

以下是 Git 集成为创作体验带来的一些优势列表:

  • 源代码管理:随着数据工厂工作负载变得至关重要,你可能需要将工厂与 Git 集成,以应用多项源代码管理的好处,例如:
    • 跟踪/审核更改的功能。
    • 还原导致 bug 的更改的功能。
  • 部分保存:在通过数据工厂服务进行创作时,你无法将更改保存为草稿,并且所有发布必须通过数据工厂验证。 无论你的流水线尚未完成,还是你只是想避免电脑崩溃时丢失变更,Git 集成都允许数据工厂资源无论处于什么状态,都能逐步变更。 配置Git仓库可以保存更改,只有在测试到满意的更改后才发布。
  • 协作和控制:如果有多个团队成员参与同一工厂,你可能需要通过代码评审流程让团队成员相互协作。 你还可以对工厂进行设置,使参与者拥有不同的权限。 可以仅允许某些团队成员通过 Git 进行更改,并且只允许团队中的某些人将更改“发布”到工厂。
  • 更好的CI/CD: 如果你部署到多个环境并采用 持续交付流程,Git 集成会让某些操作变得更容易。 部分此类操作包括:
    • 配置您的发布管道,使其在对“开发”工厂进行任何更改后立即自动触发。
    • 自定义工厂中可用作资源管理器模板的参数的属性。 仅将所需属性集保留为参数并将其他所有内容进行硬编码可能会非常有用。
  • 性能提升: 一个普通的Git集成工厂加载速度是对数据工厂服务的10倍。 性能提升的原因在于资源是通过 Git 下载的。

注意

在配置 Git 存储库时,Azure 数据工厂 UX 禁用了直接使用数据工厂服务进行创作的功能。 通过PowerShell或SDK进行的更改会直接发布到Data Factory服务,不会录入Git。

连接到 Git 存储库

可通过四种不同的方法将 Git 存储库连接至您的数据工厂,无论是对于 Azure Repos 还是 GitHub。 连接到 Git 存储库后,可以在“源代码控制”部分下“Git配置”中的管理中心内查看和管理配置。

配置方法 1:主页

在Azure 数据工厂主页中,选择顶部设置代码存储库。

从主页配置代码存储库

配置方法 2:编辑画布

在 Azure 数据工厂 UX 创作画布中,选择 Data Factory 下拉菜单,然后选择 设置代码存储库。

在创作环境中配置代码存储库设置

配置方法 3:管理中心

转到 Azure 数据工厂 Studio 中的管理中心。 在“源代码管理”部分中选择“Git 配置”。 如果没有连接任何存储库,请选择“配置”。

通过管理中心配置代码存储库设置

配置方法 4:在创建工厂期间

在 Azure 门户中创建新的数据工厂时,可以在 Git 配置选项卡中配置 Git 存储库信息。

注意

在Azure门户中配置Git时,项目名称和仓库名称等设置必须手动输入,而不是下拉菜单。

从 Azure 门户配置代码存储库设置

使用 Azure Repos Git 集成进行创作

使用 Azure Repos Git 集成进行创作允许在创作数据工厂管道时进行源代码管理和协作。 可以将数据工厂与Azure Repos Git 组织存储库相关联,以便进行源代码管理、协作、版本控制等。 单个Azure Repos Git 组织可以有多个存储库,但Azure Repos Git 存储库只能与一个数据工厂相关联。 如果没有Azure Repos组织或存储库,请按照说明创建资源。

注意

可以在 Azure Repos Git 存储库中存储脚本和数据文件。 但是,必须手动将文件上传到Azure 存储。 数据工厂管道不会自动将存储在 Azure Repos Git 存储库中的脚本或数据文件上传到Azure 存储。 其他文件(例如 ARM 模板、脚本或配置文件)可以存储在映射的文件夹外部的存储库中。 如果您执行此操作,请记住,需要额外的任务来生成/部署并与存储在映射到Azure DevOps文件夹之外的文件进行交互。

Azure Repos 设置

配置窗格分步介绍如何配置以下每项代码存储库设置:

设置 说明 值
存储库类型 Azure Repos代码存储库的类型。
Azure DevOps Git 或GitHub
Microsoft Entra ID 您的Microsoft Entra租户名称。 <your tenant name>
Azure Repos Organization Azure Repos的组织名称。 可以在 https://{organization name}.visualstudio.com 中找到Azure Repos组织名称。 可以登录Azure Repos组织访问Visual Studio配置文件并查看存储库和项目。 <your organization name>
ProjectName Azure Repos项目名称。 可以在 https://{organization name}.visualstudio.com/{project name} 中找到Azure Repos项目名称。 <your Azure Repos project name>
RepositoryName Azure Repos代码存储库名称。 Azure Repos项目包含 Git 存储库,用于在项目增长时管理源代码。 要么创建一个新的存储库,要么使用项目中已有的存储库。 <your Azure Repos code repository name>
协作分支 将用于发布的 Azure Repos 协作分支。 该名称默认为 main。 如果希望从其他分支发布资源,可更改此设置。 <your collaboration branch name>
发布分支 发布分支是您的存储库中用于存储和更新发布相关 ARM 模板的分支。 该名称默认为 adf_publish。 <your publish branch name>
根文件夹 Azure Repos 协作分支中的根文件夹。 <your root folder name>
将现有的数据工厂资源导入存储库。 指定是否将现有数据工厂资源从 UX Authoring 画布导入到 Azure Repos Git 存储库中。 选择相应的框以将你的数据工厂资源导入 JSON 格式关联的 Git 存储库。 此操作单独导出每个资源(即,链接的服务和数据集导出到单独的 JSON)。 如果未选中此框,不能导入现有的资源。 已选择(默认)
要将资源导入到的分支 指定要将数据工厂资源(管道、数据集、链接服务等)导入哪个分支。 可将资源导入以下分支之一:a. 协作 b. 新建;c. 使用现有

注意

如果你用的是Microsoft Edge,但Azure DevOps账户下拉菜单里没有看到任何值,可以把 https://*.visualstudio.com 添加到可信网站列表。

编辑存储库设置

如果需要对配置的 Azure Repos Git 存储库的设置进行任何调整,可以选择Edit。

截图显示用于编辑 Azure Repos Git 存储库的编辑按钮。

可以更新发布分支,并决定是否从 ADF 工作室禁用发布按钮。 如果选择在工作室中禁用发布按钮,则工作室中的发布按钮将灰显。 这有助于避免覆盖上次自动发布部署。

显示用于禁用数据工厂工作室的“发布”按钮的复选框的屏幕截图。

使用不同的 Microsoft Entra 租户

Azure Repos Git 存储库可以位于不同的Microsoft Entra租户中。 若要指定其他Microsoft Entra租户,必须具有你正在使用的Azure订阅的管理员权限。 有关详细信息,请参阅更改订阅管理员。

重要

若要连接到另一个Microsoft Entra ID,登录的用户必须是该 Active Directory 的一部分。

使用您的个人微软账户

要通过 Microsoft 账户进行 Git 集成,您可以将个人的 Azure 存储库链接到组织的 Active Directory。

  1. 将您的个人 Microsoft 账户作为来宾添加到组织的“Active Directory”。 有关详细信息,请参阅 Azure 门户中的 Add Microsoft Entra B2B 协作用户。

  2. 使用您的个人 Microsoft 帐户登录到 Azure 门户。 然后切换到组织的Active Directory。

  3. 转到“Azure DevOps”部分,可在其中查看个人存储库。 选择存储库并连接到Active Directory。

执行这些配置步骤之后,在数据工厂 UI 中设置 Git 集成时个人存储库可用。

有关将Azure Repos连接到组织的Active Directory的详细信息,请参阅 将Azure DevOps组织连接到 Microsoft Entra ID。

使用 GitHub 集成进行创作

使用 GitHub 集成进行创作允许在创作数据工厂管道时进行源代码管理和协作。 可以将数据工厂与GitHub帐户存储库相关联,以便进行源代码管理、协作、版本控制。 单个GitHub帐户可以托管多个存储库,每个存储库都可以与多个数据工厂相关联。 通过将每个数据工厂配置为使用同一存储库中的不同分支,可以维护单独的环境(例如开发、暂存和生产),同时独立管理其配置。 如果没有GitHub帐户或存储库,请按照说明创建资源。

与数据工厂的GitHub集成支持公共GitHub(即https://github.com)、GitHub Enterprise Cloud 和 GitHub Enterprise Server。 只要你在 GitHub 里拥有仓库的读写权限,就可以在 Data Factory 中同时使用公共和私有的 GitHub 仓库。 要连接公共存储库,请选择“使用链接存储库”选项,因为它们在“存储库名称”下拉菜单中不可见。 ADF 的 GitHub 企业服务器集成仅适用于 正式支持的 GitHub enterprise server。

对于GitHub组织帐户拥有的存储库,管理员必须授权 ADF 应用。 对于GitHub用户帐户拥有的存储库,至少具有协作者权限的用户可以授权 ADF 应用。 此权限不会授予 ADF 应用直接访问该帐户/组织拥有的所有存储库的权限,而仅允许 ADF 应用根据用户访问权限代表用户访问存储库。

注意

如果你用的是 Microsoft Edge,GitHub Enterprise 版本低于 2.1.4 是不支持的。 GitHub 官方支持 >=3.0,所有这些应该都适用于 ADF。 随着GitHub更改其最低版本,ADF 支持的版本也会更改。

GitHub设置

显示GitHub中配置存储库窗格的屏幕截图。

注意

如果遇到错误 无法列出GitHub存储库。请确保帐户名称正确,并且你有权限执行操作。,请确认使用的是正确的所有者名称,而不是GitHub存储库的URL。

截图显示在GitHub企业服务器窗格中配置存储库。

GitHub仓库设置截图。

配置窗格显示以下GitHub存储库设置:

设置 说明 值
存储库类型 代码仓库的类型。 GitHub
使用 GitHub Enterprise Server 选中GitHub Enterprise Server 的复选框。 未选择(默认值)
GitHub 企业服务器 URL GitHub 企业版根网址(本地 GitHub 企业版服务器必须为 HTTPS)。 例如:https://github.mydomain.com。 仅当选择了 Use GitHub Enterprise Server 时才是必需的 <your GitHub Enterprise Server URL>
GitHub存储库所有者 拥有该存储库的GitHub组织或账户。 可从 https://github.com/{owner}/{repository name} 找到此名称。 导航到此页面会提示你为你的 GitHub 组织或帐户输入 GitHub OAuth 凭据。 如果选择 使用 GitHub Enterprise Server,将显示一个对话框,用于输入访问令牌。 <your GitHub repository owner name>
存储库名称 GitHub代码存储库名称。 GitHub帐户包含用于管理源代码的 Git 存储库。 可以创建新存储库,或使用帐户中现有的存储库。 选择 Select 存储库时指定GitHub代码存储库名称。 <your repository name>
Git 存储库链接 您的GitHub代码存储库链接。 当选择 使用存储库链接 时,指定您的 GitHub 代码存储库链接。 <your repository link>
协作分支 用于发布的您的GitHub协作分支。 默认设置为 main。 如果希望从其他分支发布资源,可更改此设置。 还可在此处创建新的协作分支。 <your collaboration branch>
发布分支 存储和更新发布相关 ARM 模板的存储库中的分支。 <your publish branch name>
根文件夹 GitHub协作分支中的根文件夹。 <your root folder name>
将现有资源导入到存储库中 指定是否将现有数据工厂资源从 UX 创作画布导入GitHub存储库。 选择相应的框以将你的数据工厂资源导入 JSON 格式关联的 Git 存储库。 此操作单独导出每个资源(即,链接的服务和数据集导出到单独的 JSON)。 如果未选中此框,不能导入现有的资源。 已选择(默认)
将资源导入此分支 指定要将数据工厂资源(管道、数据集、链接服务等)导入哪个分支。

编辑存储库设置

如果需要对配置的GitHub存储库的设置进行任何调整,可以选择Edit。

截图显示用于编辑 GitHub 仓库的编辑按钮。

可以更新发布分支,并决定是否从 ADF 工作室禁用发布按钮。 如果选择在工作室中禁用发布按钮,则工作室中的发布按钮将灰显。 这有助于避免覆盖上次自动发布部署。

Screenshot 显示一个复选框,用于禁用 Azure 数据工厂 Studio 的发布按钮。

GitHub组织

连接到GitHub组织需要组织授予对Azure 数据工厂的权限。 在组织中拥有 ADMIN 权限的用户必须执行以下步骤,才能允许数据工厂进行连接。

首次在 Azure 数据工厂 中连接到 Public GitHub 或 GitHub Enterprise Cloud

如果首次从 Azure 数据工厂 连接到公共GitHub或 GitHub Enterprise Cloud,请执行以下步骤以连接到GitHub组织。

  1. 在 Git 配置窗格中,在 GitHub 帐户字段中输入组织名称。 出现登录 GitHub 的提示。
  2. 使用用户凭据登录。
  3. 你需要授权 Azure 数据工厂 作为一个叫 AzureDataFactory 的应用程序。 在此屏幕上,你会看到一个选项,用于授予 ADF 对组织的访问权限。 如果未看到授予权限的选项,请让管理员通过GitHub手动授予权限。

按照这些步骤操作后,工厂可以连接到组织中的公用和专用存储库。 如果无法进行连接,请尝试清除浏览器缓存,然后重试。

已使用个人帐户连接到公共GitHub或GitHub企业云

如果已连接到公共GitHub或GitHub企业云,并且仅授予访问个人帐户的权限,请按照以下步骤向组织授予权限。

  1. 转到GitHub并打开 Settings。

    打开 GitHub 设置

  2. 选择“应用程序”。 在“授权的 OAuth 应用”选项卡中,应会看到“AzureDataFactory”。

    选择 OAuth 应用

  3. 选择此应用程序,并授予其对组织的访问权限。

    授予访问权限

按照这些步骤操作后,工厂可以连接到组织中的公用和专用存储库。

连接到 GitHub Enterprise Server

如果连接到 GitHub Enterprise Server,则需要使用个人访问令牌进行身份验证。 在创建个人访问令牌中了解如何创建个人访问令牌。

注意

GitHub企业服务器位于自承载的私有环境中,因此在使用此身份验证时,您需要完全控制防火墙、网络策略和VPN。 有关详细信息,请参阅 About GitHub Enterprise Server。

Screenshot 显示GitHub使用企业服务器窗格配置存储库。

显示使用企业服务器访问令牌身份验证的屏幕截图。

已知GitHub限制

  • 可以在GitHub存储库中存储脚本和数据文件。 但是,必须手动将文件上传到Azure 存储。 数据工厂管道不会自动将存储在GitHub存储库中的脚本或数据文件上传到Azure 存储。

  • 2.14.0 或更旧版本的 GitHub Enterprise 在 Microsoft Edge 浏览器中不兼容。

  • GitHub与数据工厂视觉对象创作工具的集成仅适用于数据工厂的正式发布版本。

连接到 Azure DevOps Server 2022

如果连接到 Azure DevOps Server 2022,则需要使用个人访问令牌进行身份验证。 在此处了解如何创建个人访问令牌。

通过提供 Azure DevOps Server URL 和 Azure DevOps Project Collection,连接到本地 Azure DevOps

屏幕截图显示 ADO 使用服务器配置存储库。

为代码提供访问权限范围为“读/写”的令牌。

屏幕截图显示了 ADO 配置访问令牌。

版本控制

版本控制(也称为源代码管理)系统允许开发人员协作处理代码并跟踪对基本代码所做的更改。 源代码管理是用于多开发人员项目的重要工具。

创建功能分支

与数据工厂关联的每个Azure Repos Git 存储库都有一个协作分支。 (默认协作分支为 main)。 用户也可以通过在分支下拉菜单中选择 +新分支 来创建功能分支。

创建新分支的截图。

出现“新建分支”窗格后,输入功能分支的名称,然后选择一个分支作为工作的基础。

屏幕截图显示如何基于私有分支创建分支。

当你准备好将功能分支的更改合并到协作分支时,在分支下拉菜单中选择“ 创建拉取请求”。 此操作将转到 Azure Repos Git,在此可创建拉取请求、进行代码评审,并将更改合并到协作分支。 (main 是默认值)。 只允许你从协作分支将内容发布到 Data Factory 服务。

创建新的拉取请求

配置发布设置

默认情况下,数据工厂将生成已发布工厂的资源管理器模板,并将其保存到名为 adf_publish 的分支中。 若要配置自定义发布分支,请将 publish_config.json 文件添加到协作分支的根文件夹中。 发布时,ADF 读取此文件,查找字段 publishBranch,并将所有资源管理器模板保存到指定位置。 如果该分支不存在,数据工厂会自动创建它。 此文件的外观类似如下示例:

{
    "publishBranch": "factory/adf_publish"
}

Azure 数据工厂一次只能有一个发布分支。 当指定新的发布分支,数据工厂不会删除以前的发布分支。 如果想要删除以前的发布分支,请手动将其删除。

注意

加载工厂时,数据工厂仅读取 publish_config.json 文件。 如果已在门户中加载工厂,请刷新浏览器,以便所做的更改生效。

发布代码更改

在将修改合并到协作分支(main 默认设置)后,选择 “发布 ”,将主分支的代码变更手动发布到数据工厂服务。

将更改发布至数据工厂服务

此时会打开一个侧窗格,你可以在其中确认发布分支和挂起的更改是否正确。 验证更改后,选择“ 确定 ”以确认发布。

确认正确的发布分支

重要

主分支并不代表数据工厂服务中部署的内容。 必须将主分支手动发布到 Data Factory 服务。

Git 集成的最佳做法

权限

通常,你不希望每个团队成员都有更新数据工厂的权限。 建议使用以下权限设置:

  • 所有团队成员都应对数据工厂具有读取权限。
  • 只允许选定的一组人员发布到数据工厂。 为此,他们必须在包含数据工厂的资源组上具有“数据工厂参与者”角色。 有关权限的详细信息,请参阅 Azure 数据工厂 的角色和权限。

建议不要允许直接签入到协作分支。 此限制有助于防止出现漏洞,因为每个签入都将经历创建功能分支中描述的拉取请求审核流程。

使用来自Azure 密钥保管库的密码

建议使用 Azure 密钥保管库 存储数据工厂链接服务的任何连接字符串或密码或托管标识身份验证。 出于安全原因,数据工厂不在 Git 中存储机密。 对包含密码等机密的链接服务所做的任何更改都会立即发布到Azure 数据工厂服务。

使用 密钥保管库 或托管身份认证也使持续集成和部署更为便捷,因为在 资源管理器 模板部署时无需提供这些秘密。

Git 集成故障排查

过时的发布分支

下面是一些可能导致发布分支过时的示例情形:

  • 用户有多个分支。 在一个功能分支中,他们删除了一个与 Azure 密钥保管库 (AKV) 无关联的关联服务(非 AKV 关联的服务无论是否在 Git 中都会立即发布),并且从未将该功能分支合并到协作分支中。
  • 用户使用 SDK 或 PowerShell 修改了数据工厂
  • 用户已将所有资源移动到新的分支,并尝试首次发布。 导入资源时应手动创建链接服务。
  • 用户手动上传一个非 AKV 的链接服务或一个 Integration Runtime JSON。 他们从另一个资源(如数据集、链接服务或管道)引用该资源。 由于需要对凭据进行加密,因此通过用户界面创建的非 AKV 链接服务将立即发布。 如果你上传了引用该链接服务的数据集并尝试发布,用户界面允许发布,因为它存在于Git环境中。 发布时会被拒绝,因为数据工厂服务中不存在。

如果发布分支与主分支不同步,并且包含虽是最近发布但却已过时的资源,则可以使用以下任一解决方案:

选项1:使用覆盖实时模式功能

它将来自协作分支的代码发布到实时模式中或将其覆盖。 它会将存储库中的代码视为真实来源。

代码流:协作分支 -> 实时模式

强制从协作分支发布代码

选项 2:断开连接并重新连接 Git 存储库

它将代码从实时模式导入协作分支。 它将实时模式下的代码视为事实来源。

代码流:实时模式 -> 协作分支

  1. 删除当前的 Git 存储库
  2. 使用相同的设置重新配置 Git,但确保选择了“将现有数据工厂资源导入到存储库”,然后选择“协作分支(同一分支)”
  3. 创建拉取请求以将更改合并到协作分支。

注意

只有在不允许直接提交的仓库中工作时,才需要创建并合并拉取请求。 在大多数组织中,向存储库提交的内容需要在合并之前进行审查,因此最佳做法通常是使用此方法。 但在某些情况下不需要审查,在这种情况下,不需要创建和合并拉取请求,但可以直接将更改提交到协作分支。

根据需要适当地选择任一方法。

所有资源在发布时都显示为全新状态

发布时,所有资源可能会显示为新资源,即使它们之前已发布。 如果通过重新部署工厂 ARM 模板或通过 PowerShell 或 REST API 更新工厂 repoConfiguration 属性,将 lastCommitId 属性重置在工厂的 repoConfiguration 属性上,则可能发生这种情况。 继续发布资源可以解决该问题,但为了防止再次发生此类事件,请避免更新工厂 repoConfiguration 属性。

切换到不同 Git 存储库

若要切换到另一个 Git 存储库,请转到“源代码管理”下的管理中心的“Git 配置”页。 选择“断开”。

“Git”图标

输入数据工厂名称,然后选择 确认 以删除与数据工厂关联的 Git 存储库。

删除与当前 Git 存储库的关联

删除与当前存储库的关联后,可以将 Git 设置配置为使用不同的存储库,然后将现有数据工厂资源导入新存储库。

重要

从数据工厂删除 Git 配置不会从存储库中删除任何内容。 工厂包含了所有已发布的资源。 你可以直接通过该服务编辑工厂。

  • 若要了解有关监视和管理管道的信息,请参阅以编程方式监视和管理管道。
  • 若要实现持续集成和部署,请参阅 Azure 数据工厂 中的连续集成和交付(CI/CD)。