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

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

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

提示

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

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

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

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

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

注意

我们在 Azure 政府和由世纪互联运营的 Microsoft Azure 上添加了 GitHub 公共支持。 请参阅公告博客

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

Git 集成的优点

以下是 git 集成为创作体验提供的一些优势:

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

注意

配置有 Git 存储库时,Azure 数据工厂 UX 中将禁用直接使用数据工厂服务进行创作。 通过 PowerShell 或 SDK 所做的更改会直接发布到数据工厂服务,而不会进入 Git。

连接到 Git 存储库

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

配置方法 1:主页

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

从主页配置代码存储库

配置方法 2:创作画布

在 Azure 数据工厂用户体验创作画布中,依次选择“数据工厂”下拉菜单和“设置代码存储库”。

通过创作配置代码存储库设置

配置方法 3:管理中心

转到 Azure 数据工厂工作室中的管理中心。 在“源代码管理”部分中选择“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 组织 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 创作画布将现有数据工厂资源导入 Azure Repos Git 存储库。 选择相应的框以将你的数据工厂资源导入 JSON 格式关联的 Git 存储库。 此操作单独导出每个资源(即,链接的服务和数据集导出到单独的 JSON)。 如果未选中此框,不能导入现有的资源。 已选择(默认)
要将资源导入到的分支 指定要将数据工厂资源(管道、数据集、链接服务等)导入哪个分支。 可将资源导入以下分支之一:a. 协作;b. 新建;c. 使用现有项

注意

如果你使用的是 Microsoft Edge,并且在 Azure DevOps 帐户下拉列表中未看到任何值,请将 https://*.visualstudio.com 添加到受信任站点列表中。

编辑存储库设置

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

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

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

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

使用不同的 Microsoft Entra 租户

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

重要

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

使用 Microsoft 个人帐户

若要将 Microsoft 个人帐户用于 Git 集成,可以将你的 Azure 个人存储库链接到贵组织的 Active Directory。

  1. 将你的 Microsoft 个人帐户添加到贵组织的 Active Directory 以作为来宾。 有关详细信息,请参阅在 Azure 门户中添加 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 与数据工厂的集成支持公共 GitHub(即 https://github.com)、GitHub Enterprise Cloud 和 GitHub Enterprise Server。 只要你对 GitHub 中的存储库具有读写权限,就可以将公共和专用 GitHub 存储库与数据工厂一起使用。 要连接公共存储库,请选择“使用链接存储库”选项,因为它们在“存储库名称”下拉菜单中不可见。 ADF 的 GitHub 企业服务器集成仅适用于官方支持的 GitHub 企业服务器版本。

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

注意

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

GitHub 设置

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

显示 GitHub“使用企业服务器配置存储库”窗格的屏幕截图。

GitHub 存储库设置

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

设置 说明
存储库类型 Azure Repos 代码存储库的类型。 GitHub
使用 GitHub Enterprise Server 用于选择 GitHub Enterprise Server 的复选框。 未选择(默认值)
GitHub Enterprise Server URL GitHub Enterprise 根 URL(对于本地 GitHub 企业服务器,必须是 HTTPS)。 例如:https://github.mydomain.com。 仅当选择了“使用 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 存储库。 可以创建新存储库,或使用帐户中现有的存储库。 选择“选择存储库”时,请指定 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 存储库的设置进行任何调整,可以选择“编辑”。

显示用于编辑 GitHub 存储库的编辑按钮的屏幕截图。

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

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

GitHub 组织

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

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

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

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

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

已使用个人帐户连接到公共 GitHub 或 GitHub Enterprise Cloud

如果已连接到公共 GitHub 或 GitHub Enterprise Cloud,但仅授予了访问个人帐户的权限,请按照以下步骤授予访问组织的权限。

  1. 转到 GitHub,打开“设置”。

    打开 GitHub 设置

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

    选择 OAuth 应用

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

    授予访问权限

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

连接到 GitHub Enterprise Server

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

注意

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

屏幕截图显示 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 URLAzure DevOps Project Collection,连接到本地 Azure DevOps

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

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

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

版本控制

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

创建功能分支

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

创建新分支

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

显示如何基于专用分支创建分支的屏幕截图。

准备好将功能分支的更改合并到协作分支时,单击分支下拉列表并选择“创建拉取请求”。 此操作会将你转到 Azure Repos Git,可以在这里发起拉取请求、完成代码评审并将更改合并至协作分支。 (默认分支为 main)。 只能从协作分支发布至数据工厂服务。

创建新的拉取请求

配置发布设置

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

{
    "publishBranch": "factory/adf_publish"
}

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

注意

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

发布代码更改

在将更改合并到协作分支(默认为 main)后,单击“发布”,以将主分支中的代码更改手动发布到数据工厂服务中。

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

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

确认正确的发布分支

重要

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

Git 集成的最佳做法

权限

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

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

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

使用 Azure Key Vault 中的密码

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

使用 Key Vault 或 MSI 身份验证还可以简化持续集成和部署,因为在资源管理器模板部署期间不必提供这些机密。

排查 Git 集成问题

过时的发布分支

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

  • 用户有多个分支。 在一个功能分支中,用户删除了一个与 AKV 不关联的链接服务(无论是否在 Git 中,非 AKV 链接服务都会立即发布),并且从未将功能分支合并到协作分支中。
  • 用户使用 SDK 或 PowerShell 修改了数据工厂
  • 用户已将所有资源移动到新的分支,并尝试首次发布。 导入资源时应手动创建链接服务。
  • 用户手动上传非 AKV 链接服务或集成运行时 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 配置不会从存储库中删除任何内容。 工厂包含了所有已发布的资源。 你可以直接通过该服务编辑工厂。