Sincronizar un repositorio de GitHub en el Administrador de orquestación de flujo de trabajo

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!

Nota:

El Administrador de orquestación de flujo de trabajo cuenta con la tecnología de Apache Airflow.

En este artículo, aprenderá a sincronizar el repositorio de GitHub en el Administrador de orquestación de flujo de trabajo de Azure Data Factory de dos maneras diferentes:

  • Mediante Habilitar la sincronización de Git en la interfaz de usuario del Administrador de orquestación de flujo de trabajo.
  • Mediante el uso de la API de REST.

Requisitos previos

Uso de la interfaz de usuario del Administrador de orquestación de flujo de trabajo

Para sincronizar el repositorio de GitHub mediante la interfaz de usuario del Administrador de orquestación de flujo de trabajo:

  1. Compruebe que el repositorio contiene las carpetas y los archivos necesarios:

    • dags/: para gráficos acíclicos dirigidos por Apache Airflow (dags) (obligatorio).

    • Plugins/: para integrar características externas en Airflow.

      Captura de pantalla en la que se muestra la estructura de carpetas de Airflow en GitHub.

  2. Al crear un entorno de ejecución de integración del Administrador de orquestación de flujo de trabajo, seleccione Habilitar la sincronización de Git en el cuadro de diálogo Configuración del entorno de Airflow.

    Captura de pantalla en la que se muestra la casilla Habilitar sincronización de Git en el cuadro de diálogo de configuración del entorno de Airflow que aparece al crear un IR de Airflow.

  3. Seleccione uno de los siguientes tipos de servicios de Git admitidos:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Captura de pantalla que muestra la lista desplegable selección de tipos de servicio de Git en el cuadro de diálogo de configuración del entorno que aparece durante la creación de un entorno de ejecución de integración del Administrador de orquestación de flujo de trabajo.

  4. Seleccione un tipo de credencial:

    • Ninguno (en el caso de un repositorio público): al seleccionar esta opción, asegúrese de que la visibilidad del repositorio sea pública. A continuación, rellene los detalles:

      • Dirección URL del repositorio de Git (obligatoria): dirección URL de clonación del repositorio de GitHub deseado.
      • Rama de Git (obligatoria): rama actual donde se encuentra el repositorio de Git deseado.
    • Token de acceso personal de Git: después de seleccionar esta opción para un token de acceso personal (PAT), rellene los campos restantes en función del tipo de servicio de Git seleccionado:

      • Token de acceso personal de GitHub
      • Token de acceso personal de ADO
      • Token de acceso personal de GitLab
      • Token de acceso personal de BitBucket

      Captura de pantalla que muestra las opciones de credenciales PAT de Git en el cuadro de diálogo de configuración del entorno de Airflow que aparece durante la creación de un entorno de ejecución de integración del Administrador de orquestación de flujo de trabajo.

    • SPN (nombre de entidad de seguridad de servicio): solo ADO admite este tipo de credencial. Cuando haya seleccionado esta opción, rellene los campos restantes en función del tipo de servicio de Git seleccionado:

      • Dirección URL del repositorio de Git (obligatoria): dirección URL de clonación al repositorio de Git que se va a sincronizar.
      • Rama de Git (obligatoria): rama del repositorio que se va a sincronizar.
      • Id. de aplicación de la entidad de servicio (obligatorio): identificador de la aplicación de entidad de servicio con acceso al repositorio de ADO que se va a sincronizar.
      • Secreto de la entidad de servicio (obligatorio): secreto generado manualmente en la entidad de servicio cuyo valor se va a usar para autenticar el repositorio de ADO y acceder a él.
      • Id. de inquilino de la entidad de servicio (obligatorio): el identificador de inquilino de la entidad de servicio.

      Captura de pantalla que muestra las opciones de credenciales SPN de Git en el cuadro de diálogo de configuración del entorno de Airflow que aparece durante la creación de un entorno de ejecución de integración del Administrador de orquestación de flujo de trabajo.

  5. Rellene el resto de los campos con la información necesaria.

  6. Seleccione Crear.

Uso de la API de REST

Para sincronizar el repositorio de GitHub mediante la API de REST:

  • Método: PUT

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

  • Parámetros de URI:

    Nombre En Obligatorio Type Descripción
    Id. de suscripción path True cadena Identificador de suscripción.
    Nombre del grupo de recursos path True cadena Nombre del grupo de recursos (patrón Regex: ^[-\w\._\(\)]+$)
    dataFactoryName path True cadena Nombre del Azure Data Factory (patrón Regex:^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path True string Nombre del entorno del Administrador de orquestación de flujo de trabajo
    Versión de API Query True cadena Versión de API
  • Cuerpo de la solicitud (configuración de Airflow)::

    Nombre Escribir Descripción
    name cadena Nombre del entorno de Airflow
    properties propertyType Propiedades de configuración para el entorno
  • Tipo de propiedad:

    Nombre Escribir Descripción
    Tipo cadena Tipo de recurso (Airflow en este escenario)
    typeProperties typeProperty Flujo de aire
  • Propiedad Type:

    Nombre Escribir Descripción
    computeProperties computeProperty Configuración del tipo de proceso usado para el entorno
    airflowProperties airflowProperty Configuración de las propiedades de Airflow para el entorno
  • Propiedad Compute:

    Nombre Escribir Descripción
    ubicación string La ubicación del entorno de ejecución de integración de Airflow tiene como valor predeterminado la región de la factoría de datos. Para crear un entorno de ejecución de integración en otra región, cree una nueva factoría de datos en la región necesaria.
    computeSize cadena Tamaño del nodo de proceso en el que desea que se ejecute el entorno de Airflow. Algunos ejemplos son Grande o Pequeño. Se asignan inicialmente tres nodos.
    extraNodes integer Cada nodo adicional agrega tres trabajos más.
  • Propiedad Airflow:

    Nombre Escribir Descripción
    airflowVersion string Versión compatible de Apache Airflow. Por ejemplo, 2.4.3.
    airflowRequirements Matriz<cadena> Bibliotecas de Python que desea usar. Por ejemplo: ["flask-bcrypy=0.7.1"]. Puede ser una lista delimitada por comas.
    airflowEnvironmentVariables Objeto (par clave-valor) Variables de entorno que desea usar. Por ejemplo: { “SAMPLE_ENV_NAME”: “test” }.
    gitSyncProperties gitSyncProperty Propiedades de configuración de Git.
    enableAADIntegration boolean Permite que Microsoft Entra ID inicie sesión en el Administrador de orquestación de flujo de trabajo.
    userName cadena o null Nombre de usuario para Autenticación básica.
    password cadena o null Contraseña para Autenticación básica.
  • Propiedad de sincronización de Git:

    Nombre Escribir Descripción
    gitServiceType string El servicio Git en el que se encuentra el repositorio deseado. Los valores son GitHub, ADO, GitLab o BitBucket.
    gitCredentialType cadena Tipo de credencial de Git. Los valores son PAT (token de acceso personal), SPN (solo compatible con ADO) o Ninguno.
    repo string Vínculo del repositorio.
    branch string Rama que se va a usar en el repositorio.
    username string Nombre de usuario de GitHub.
    Credential: string Valor del PAT.
    tenantId string Id. del inquilino de la entidad de servicio (solo compatible con ADO).
  • Respuestas:

    Nombre status code Tipo Descripción
    Aceptado 200 Factory OK (CORRECTO)
    No autorizado 401 Error en la nube Matriz con más detalles de error

Ejemplos

Consulte los siguientes ejemplos.

Solicitud de ejemplo:

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

Cuerpo de ejemplo:

{
   "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": []
         }
      }
   }
}

Respuesta de ejemplo:

Status code: 200 OK

Cuerpo de la respuesta:

{
   "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"
}

Estos son algunos ejemplos de carga de API:

  • Propiedades de sincronización de Git para Github con PAT:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Propiedades de sincronización de Git para ADO con PAT:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Propiedades de sincronización de Git para ADO con una entidad de servicio:

    "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>
    }
    
  • Propiedades de sincronización de Git para un repositorio público de GitHub:

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

Importación de un paquete privado con sincronización de Git

Este proceso opcional solo se aplica cuando se usan paquetes privados.

Este proceso supone que el paquete privado se sincronizó automáticamente a través de la sincronización de Git. Agregue el paquete como requisito en la interfaz de usuario del Administrador de orquestación de flujo de trabajo junto con el prefijo de ruta de acceso /opt/airflow/git/\<repoName\>/, si se conecta a un repositorio de ADO. Use /opt/airflow/git/\<repoName\>.git/ para todos los demás servicios de Git.

Por ejemplo, si el paquete privado está en /dags/test/private.whl en un repositorio de GitHub, debe agregar el requisito /opt/airflow/git/\<repoName\>.git/dags/test/private.whl en el entorno del Administrador de orquestación de flujo de trabajo.

Captura de pantalla que muestra la sección de requisitos de Airflow en el cuadro de diálogo de configuración del entorno de Airflow que aparece durante la creación de un entorno de ejecución de integración del Administrador de orquestación de flujo de trabajo.