Поделиться через


Синхронизация репозитория GitHub в Диспетчере оркестрации рабочих процессов

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Примечание.

Эта функция предоставляется в общедоступной предварительной версии. Диспетчер оркестрации рабочих процессов управляется Apache Airflow.

В этой статье вы узнаете, как синхронизировать репозиторий GitHub в Фабрика данных Azure Диспетчер оркестрации рабочих процессов двумя способами:

  • С помощью включения синхронизации git в пользовательском интерфейсе Диспетчера рабочих процессов.
  • С помощью REST API.

Необходимые компоненты

  • Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись Azure перед началом работы. Создайте или выберите существующий экземпляр фабрики данных в регионе , где поддерживается предварительная версия диспетчера оркестрации рабочих процессов.
  • Репозиторий GitHub: вам нужен доступ к репозиторию GitHub.

Использование пользовательского интерфейса диспетчера оркестрации рабочих процессов

Синхронизация репозитория GitHub с помощью пользовательского интерфейса Диспетчера оркестрации рабочих процессов:

  1. Убедитесь, что репозиторий содержит необходимые папки и файлы:

    • Dags/: для Apache Airflow направлены ациклические графы (dags) (обязательный).

    • Подключаемые модули/: интеграция внешних функций с Airflow.

      Снимок экрана: структура папок Airflow в GitHub.

  2. При создании среды выполнения интеграции Диспетчера оркестрации рабочих процессов выберите включить синхронизацию git в диалоговом окне установки среды Airflow.

    Снимок экрана: флажок

  3. Выберите один из следующих поддерживаемых типов служб Git:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Снимок экрана: раскрывающийся список выбора типа службы Git в диалоговом окне установки среды, который отображается во время создания среды выполнения интеграции Диспетчера оркестрации рабочих процессов.

  4. Выберите тип учетных данных:

    • Нет (для общедоступного репозитория): при выборе этого параметра убедитесь, что видимость репозитория является общедоступной. Затем заполните сведения:

      • URL-адрес репозитория Git (обязательно): URL-адрес клонирования для репозитория GitHub, который требуется.
      • Ветвь Git (обязательно): текущая ветвь , в которой расположен репозиторий Git.
    • Git персональный маркер доступа: после выбора этого параметра для личного маркера доступа (PAT) заполните оставшиеся поля на основе выбранного типа службы Git:

      • Личный маркер доступа GitHub
      • ADO персональный маркер доступа
      • GitLab персональный маркер доступа
      • Токен личного доступа BitBucket

      Снимок экрана: параметры учетных данных Git PAT в диалоговом окне настройки среды Airflow, которое отображается во время создания среды выполнения интеграции Диспетчера оркестрации AWorkflow.

    • Имя субъекта-службы (имя субъекта-службы): только ADO поддерживает этот тип учетных данных. Выбрав этот параметр, заполните оставшиеся поля на основе выбранного типа службы Git:

      • URL-адрес репозитория Git (обязательный): клонированный URL-адрес репозитория Git для синхронизации.
      • Ветвь Git (обязательно): ветвь в репозитории для синхронизации.
      • Идентификатор приложения субъекта-службы (обязательно): идентификатор приложения субъекта-службы с доступом к репозиторию ADO для синхронизации.
      • Секрет субъекта-службы (обязательный): созданный вручную секрет в субъекте-службе, значение которого используется для проверки подлинности и доступа к репозиторию ADO.
      • Идентификатор клиента субъекта-службы (обязательно): идентификатор клиента субъекта-службы.

      Снимок экрана: параметры учетных данных субъекта-службы Git в диалоговом окне настройки среды Airflow, которое отображается во время создания среды выполнения интеграции Диспетчера оркестрации рабочих процессов.

  5. Заполните остальные поля необходимыми сведениями.

  6. Нажмите кнопку создания.

Использование REST API

Чтобы синхронизировать репозиторий GitHub с помощью REST API:

  • Метод: PUT

  • URL-адрес: https://management.azure.com/subscriptions/<subscriptionid>/resourcegroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<datafactoryName>/integrationruntimes/<airflowEnvName>?api-version=2018-06-01

  • Параметры URI:

    Имя. In Обязательное поле Type Описание
    идентификатор подписки; path Истина строка Идентификатор подписки
    Имя группы ресурсов path Истина строка Имя группы ресурсов (шаблон Regex: ^[-\w\._\(\)]+$)
    dataFactoryName path Истина строка Имя Фабрика данных Azure (шаблон Regex:^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path Истина строка Имя среды Диспетчера оркестрации рабочих процессов
    Версия API query Истина строка Версия API
  • Текст запроса (конфигурация Airflow):

    Имя. Тип Description
    name строка Имя среды Airflow
    свойства propertyType Свойства конфигурации среды
  • Тип свойств:

    Имя. Тип Описание
    Тип строка Тип ресурса (Airflow в этом сценарии)
    typeProperties typeProperty Воздушный поток
  • Свойство Type:

    Имя. Тип Описание
    computeProperties computeProperty Настройка типа вычислений, используемого для среды
    airflowProperties airflowProperty Настройка свойств Airflow для среды
  • Свойство вычислений:

    Имя. Тип Описание
    расположение строка Расположение среды выполнения интеграции Airflow по умолчанию используется в регионе фабрики данных. Чтобы создать среду выполнения интеграции в другом регионе, создайте фабрику данных в требуемом регионе.
    computeSize строка Размер вычислительного узла, на который будет выполняться среда Airflow. Примерами являются крупные или маленькие. Три узла изначально выделены.
    extraNodes integer Каждый дополнительный узел добавляет еще три рабочих места.
  • Свойство Airflow:

    Имя. Тип Описание
    airflowVersion строка Поддерживаемая версия Apache Airflow. Например, 2.4.3.
    airflowRequirements Строка массива<> Библиотеки Python, которые вы хотите использовать. Например, ["flask-bcrypy=0.7.1"]. Может быть списком с разделителями-запятыми.
    airflowEnvironmentVariables Объект (пара "Ключ-значение") Переменные среды, которые вы хотите использовать. Например, { "SAMPLE_ENV_NAME": "test" }.
    gitSyncProperties gitSyncProperty Свойства конфигурации Git.
    enableAADIntegration boolean Позволяет идентификатору Microsoft Entra войти в диспетчер оркестрации рабочих процессов.
    userName строка или null Имя пользователя для базовой проверки подлинности.
    password строка или null Пароль для базовой проверки подлинности.
  • Свойство синхронизации Git:

    Имя. Тип Описание
    gitServiceType строка Служба Git, в которой находится нужный репозиторий. Значения: GitHub, ADO, GitLab или BitBucket.
    gitCredentialType строка Тип учетных данных Git. Значения: PAT (для личного маркера доступа), spN (поддерживается только ADO) и None.
    репозиторий строка Ссылка на репозиторий.
    ветвь строка Ветвь для использования в репозитории.
    username строка Имя пользователя GitHub.
    Подтверждение компетенции строка Значение PAT.
    tenantId строка Идентификатор клиента субъекта-службы (поддерживается только 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:

  • Свойства синхронизации Git для GitHub с помощью PAT:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Свойства синхронизации Git для ADO с помощью PAT:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Свойства синхронизации Git для ADO с субъектом-службой:

    "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>
    }
    
  • Свойства синхронизации Git для общедоступного репозитория GitHub:

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

Импорт частного пакета с синхронизацией Git

Этот необязательный процесс применяется только при использовании частных пакетов.

В этом процессе предполагается, что частный пакет был автоматически синхронизирован с помощью синхронизации Git. Пакет добавляется в качестве требования в пользовательском интерфейсе диспетчера оркестрации рабочих процессов вместе с префиксом /opt/airflow/git/\<repoName\>/пути, если вы подключаетесь к репозиторию ADO. Используется /opt/airflow/git/\<repoName\>.git/ для всех других служб Git.

Например, если частный пакет находится в /dags/test/private.whl репозитории GitHub, необходимо добавить требование /opt/airflow/git/\<repoName\>.git/dags/test/private.whl в среду Диспетчера рабочих процессов.

Снимок экрана: раздел требований airflow в диалоговом окне настройки среды Airflow, который отображается во время создания среды выполнения интеграции Диспетчера оркестрации рабочих процессов.