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

在工作流编排管理器中同步 GitHub 存储库

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

提示

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

注意

此功能目前以公共预览版提供。 工作流编排管理器由 Apache Airflow 提供支持。

本文介绍如何通过两种不同的方式在 Azure 数据工厂工作流编排管理器中同步 GitHub 存储库:

  • 通过使用工作流编排管理器 UI 中的“启用 Git 同步”
  • 通过使用 Rest API。

先决条件

使用工作流编排管理器 UI

若要使用工作流编排管理器 UI 同步 GitHub 存储库,请执行以下操作:

  1. 确保存储库包含必要的文件夹和文件:

    • dags/:用于 Apache Airflow 有向无环图 (dag)(必需)

    • Plugins/:用于将外部功能集成到 Airflow

      显示 GitHub 中 Airflow 文件夹结构的屏幕截图。

  2. 创建工作流编排管理器集成运行时期间,选择“Airflow 环境设置”对话框中的“启用 Git 同步”

    显示创建 Airflow 集成运行时期间出现的 Airflow 环境设置对话框上的“启用 Git 同步”复选框的屏幕截图。

  3. 选择以下受支持的 Git 服务类型之一:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    显示创建工作流编排管理器集成运行时期间出现的环境设置对话框中的 Git 服务类型选择下拉列表的屏幕截图。

  4. 选择凭据类型:

    • (用于公共存储库):选择此选项时,确保存储库公开可见。 然后填写详细信息:

      • Git 存储库 URL(必填):所需 GitHub 存储库的克隆 URL。
      • Git 分支(必填):所需 Git 存储库目前所处的分支。
    • Git 个人访问令牌:为个人访问令牌 (PAT) 选择此选项后,根据所选择的 Git 服务类型填写剩下的字段

      • GitHub 个人访问令牌
      • ADO 个人访问令牌
      • GitLab 个人访问令牌
      • BitBucket 个人访问令牌

      显示创建工作流编排管理器集成运行时期间出现的 Airflow 环境设置对话框中的 Git PAT 凭据选项的屏幕截图。

    • SPN(服务主体名称):仅 ADO 支持此凭据类型。 选择此选项后,根据所选择的 Git 服务类型填写剩下的字段

      • Git 存储库 URL(必填):要同步的 Git 存储库的克隆 URL。
      • Git 分支(必填):要同步的存储库中的分支。
      • 服务主体应用 ID(必填):对要同步的 ADO 存储库具有访问权限的服务主体应用 ID。
      • 服务主体机密(必填):服务主体中手动生成的机密,其值将用于对 ADO 存储库进行身份验证并访问 ADO 存储库。
      • 服务主体租户 ID(必填):服务主体租户 ID。

      显示创建工作流编排管理器集成运行时期间出现的 Airflow 环境设置对话框中的 Git SPN 凭据选项的屏幕截图。

  5. 在剩下的字段中填入必填信息。

  6. 选择创建

使用 REST API

若要使用 Rest API 同步 GitHub 存储库,请执行以下操作:

  • 方法:PUT

  • URLhttps://management.azure.com/subscriptions/<subscriptionid>/resourcegroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<datafactoryName>/integrationruntimes/<airflowEnvName>?api-version=2018-06-01

  • URI 参数

    名称 必需 类型​​ 说明
    订阅 ID path 正确 string 订阅标识符
    资源组名称 path 正确 string 资源组名称(正则表达式模式:^[-\w\._\(\)]+$
    dataFactoryName path 正确 string Azure 数据工厂的名称(正则表达式模式:^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path 正确 string 工作流编排管理器环境的名称
    Api-version 查询 正确 string API 版本
  • 请求正文(Airflow 配置)

    名称 Type 说明
    name string Airflow 环境的名称
    properties propertyType 环境的配置属性
  • 属性类型:

    名称 Type 说明
    类型 string 资源类型(在此方案中为 Airflow
    typeProperties typeProperty 气流
  • 类型属性:

    名称 Type 描述
    computeProperties computeProperty 用于环境的计算类型的配置
    airflowProperties airflowProperty 环境的 Airflow 属性的配置
  • 计算属性:

    名称 Type 说明
    location string Airflow 集成运行时位置默认为数据工厂区域。 若要在不同的区域中创建集成运行时,请在所需的区域中创建新的数据工厂。
    computeSize string 要运行 Airflow 环境的计算节点的大小。 例如“大”或“小”。 最初分配三个节点。
    extraNodes integer 每个额外的节点再添加三个辅助角色。
  • Airflow 属性:

    名称 Type 描述
    airflowVersion string 支持的 Apache Airflow 版本。 例如 2.4.3。
    airflowRequirements Array<string> 要使用的 Python 库。 例如 ["flask-bcrypy=0.7.1"]。 可以是逗号分隔的列表。
    airflowEnvironmentVariables 对象(键/值对) 要使用的环境变量。 例如 { "SAMPLE_ENV_NAME": "test" }。
    gitSyncProperties gitSyncProperty Git 配置属性。
    enableAADIntegration boolean 允许 Microsoft Entra ID 登录到工作流编排管理器。
    userName string 或 null 基本身份验证的用户名。
    password string 或 null 基本身份验证的密码。
  • Git 同步属性:

    名称 Type 描述
    gitServiceType string 所需存储库所在的 Git 服务。 值为 GitHub、ADO、GitLab 或 BitBucket。
    gitCredentialType string Git 凭据的类型。 值为 PAT(代表个人访问令牌)、SPN(仅 ADO 支持)和“无”。
    存储库 string 存储库链接。
    分支 string 在存储库中使用的分支。
    username string GitHub 用户名。
    凭据 string PAT 的值。
    tenantId string 服务主体租户 ID(仅 ADO 支持)。
  • 响应:

    名称 状态代码 类型 描述
    已接受 200 工厂 确定
    未授权 401 云错误 具有更多错误详细信息的数组

示例

查看以下示例。

示例请求:

HTTP
PUT https://management.azure.com/subscriptions/222f1459-6ebd-4896-82ab-652d5f6883cf/resourcegroups/abnarain-rg/providers/Microsoft.DataFactory/factories/ambika-df/integrationruntimes/sample-2?api-version=2018-06-01

示例正文:

{
   "name": "sample-2",
   "properties": {
      "type": "Airflow",
      "typeProperties": {
         "computeProperties": {
            "location": "East US",
            "computeSize": "Large",
            "extraNodes": 0
         },
         "airflowProperties": {
            "airflowVersion": "2.4.3",
            "airflowEnvironmentVariables": {
               "AIRFLOW__TEST__TEST": "test"
            },
            "airflowRequirements": [
               "apache-airflow-providers-microsoft-azure"
            ],
            "enableAADIntegration": true,
            "userName": null,
            "password": null,
            "airflowEntityReferences": []
         }
      }
   }
}

示例响应:

Status code: 200 OK

响应正文:

{
   "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/your-rg/providers/Microsoft.DataFactory/factories/your-df/integrationruntimes/sample-2",
   "name": "sample-2",
   "type": "Microsoft.DataFactory/factories/integrationruntimes",
   "properties": {
      "type": "Airflow",
      "typeProperties": {
         "computeProperties": {
            "location": "East US",
            "computeSize": "Large",
            "extraNodes": 0
         },
         "airflowProperties": {
            "airflowVersion": "2.4.3",
            "pythonVersion": "3.8",
            "airflowEnvironmentVariables": {
               "AIRFLOW__TEST__TEST": "test"
            },
            "airflowWebUrl": "https://e57f7409041692.eastus.airflow.svc.datafactory.azure.com/login/",
            "airflowRequirements": [
               "apache-airflow-providers-microsoft-azure"
            ],
            "airflowEntityReferences": [],
            "packageProviderPath": "plugins",
            "enableAADIntegration": true,
            "enableTriggerers": false
         }
      },
      "state": "Initial"
   },
   "etag": "3402279e-0000-0100-0000-64ecb1cb0000"
}

以下是一些 API 有效负载示例:

  • 使用 PAT 进行 GitHub 的 Git 同步属性:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • 使用 PAT 进行 ADO 的 Git 同步属性:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • 使用服务主体进行 ADO 的 Git 同步属性:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "SPN",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": < service principal app id >,
            "credential": <service principal secret value>
            "tenantId": <service principal tenant id>
    }
    
  • GitHub 公共存储库的 Git 同步属性:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "None",
            "repo":  <repo url>,
            "branch": <repo branch to sync>
    }
    

使用 Git 同步导入专用包

此可选过程仅适用于使用专用包时。

此过程假定专用包是通过 Git 同步自动同步的。如果要连接到 ADO 存储库,请在工作流编排管理器 UI 中添加包以及路径前缀 /opt/airflow/git/\<repoName\>/ 作为要求。 对所有其他 Git 服务使用 /opt/airflow/git/\<repoName\>.git/

例如,如果专用包位于 GitHub 存储库的 /dags/test/private.whl 中,则应在工作流编排管理器环境中添加要求 /opt/airflow/git/\<repoName\>.git/dags/test/private.whl

显示创建工作流编排管理器集成运行时期间出现的 Airflow 环境设置对话框中的 Airflow 要求部分的屏幕截图。