Synchroniser un référentiel GitHub dans le gestionnaire du flux de travail

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Notes

Cette fonctionnalité est en version préliminaire publique. Le gestionnaire du flux de travail est basé sur Apache Airflow.

Dans cet article, vous apprenez à synchroniser votre référentiel GitHub dans le gestionnaire du flux de travail Azure Data Factory de deux façons différentes :

  • En utilisant Activer la synchronisation git dans l’interface utilisateur du gestionnaire du flux de travail.
  • En utilisant l’API REST.

Prérequis

Utiliser l’interface utilisateur du gestionnaire du flux de travail

Pour synchroniser votre référentiel GitHub en utilisant l’interface utilisateur du gestionnaire du flux de travail :

  1. Vérifiez que votre référentiel contient les dossiers et fichiers nécessaires :

    • Dags/ : pour les graphes orientés acycliques (DAG) Apache Airflow (obligatoires).

    • Plug-ins/ : Pour l’intégration de fonctionnalités externes à Airflow.

      Capture d’écran montrant la structure des dossiers Airflow dans GitHub.

  2. Lorsque vous créez un runtime d’intégration du gestionnaire du flux de travail, sélectionnez Activer la synchronisation git dans la boîte de dialogue Configuration de l’environnement Airflow.

    Capture d'écran montrant la case à cocher Activer la synchronisation git dans la boîte de dialogue de configuration de l’environnement Airflow qui apparaît lors de la création d'un runtime d'intégration Airflow.

  3. Sélectionnez l’un des types de service Git pris en charge suivants :

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Capture d’écran montrant la liste déroulante de sélection d’un type de service Git dans la boîte de dialogue de configuration de l’environnement qui s’affiche lors de la création d’un runtime d’intégration du gestionnaire du flux de travail.

  4. Sélectionnez un type d’infos de connexion :

    • Aucun (pour un référentiel public) : Lorsque vous sélectionnez cette option, veillez à ce que la visibilité de votre référentiel soit publique. Ensuite, renseignez les détails :

      • URL du référentiel Git (obligatoire) : URL de clone pour le référentiel GitHub que vous voulez.
      • Branche Git (obligatoire) : branche actuelle, où se trouve le référentiel Git que vous voulez.
    • Jeton d’accès personnel Git : Une fois que vous avez sélectionné cette option pour un jeton d’accès personnel (PAT), renseignez les champs restants en fonction du Type de service Git sélectionné :

      • Jeton d’accès personnel GitHub
      • Jeton d’accès personnel ADO
      • Jeton d’accès personnel GitLab
      • Jeton d’accès personnel BitBucket

      Capture d’écran montrant les options d’infos de connexion PAT Git dans la boîte de dialogue de configuration de l’environnement Airflow qui s’affiche lors de la création d’un runtime d’intégration du gestionnaire du flux de travail.

    • SPN (Nom de principal du service) : Seul ADO prend en charge ce type d’infos de connexion. Une fois que vous avez sélectionné cette option, renseignez les champs restants en fonction du Type de service Git sélectionné :

      • URL du référentiel Git (obligatoire) : URL de clone vers le référentiel Git à synchroniser.
      • Branche Git (obligatoire) : branche dans le référentiel à synchroniser.
      • ID d’application du principal de service (obligatoire) : ID d’application du principal de service avec accès au référentiel ADO à synchroniser.
      • Secret du principal de service (obligatoire) : secret généré manuellement dans le principal de service dont la valeur est utilisée pour authentifier le référentiel ADO et y accéder.
      • ID de locataire du principal de service (obligatoire) : ID de locataire du principal de service.

      Capture d’écran montrant les options d’infos de connexion SPN Git dans la boîte de dialogue de configuration de l’environnement Airflow qui s’affiche lors de la création d’un runtime d’intégration du gestionnaire du flux de travail.

  5. Renseignez le reste des champs avec les informations requises.

  6. Sélectionnez Créer.

Utiliser l’API REST

Pour synchroniser votre référentiel GitHub en utilisant l’API Rest :

  • Méthode : PUT

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

  • Paramètres d’URI :

    Nom Dans Obligatoire Type Description
    ID d’abonnement path True string Identificateur d'abonnement
    Nom du groupe de ressources path True string Nom du groupe de ressources (modèle Regex : ^[-\w\._\(\)]+$)
    dataFactoryName path True string Nom du Azure Data Factory (modèle Regex :^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path True string Nom de l’environnement du gestionnaire du flux de travail
    Api-version query True string Version d’API
  • Corps de la demande (configuration Airflow) :

    Nom Type Description
    name chaîne Nom de l’environnement Airflow
    properties propertyType Propriétés de configuration de l’environnement
  • Type de propriétés :

    Nom Type Description
    Type string Type de ressource (Airflow dans ce scénario)
    typeProperties typeProperty Ventilation
  • Propriété Type :

    Nom Type Description
    computeProperties computeProperty Configuration du type de calcul utilisé pour l’environnement
    airflowProperties airflowProperty Configuration des propriétés Airflow pour l’environnement
  • Propriété Compute :

    Nom Type Description
    location string La localisation du runtime d’intégration Airflow est définie par défaut sur la région de la fabrique de données. Pour créer un runtime d’intégration dans une autre région, créez une fabrique de données dans la région requise.
    computeSize string Taille du nœud de calcul sur lequel vous souhaitez que votre environnement Airflow s’exécute. Les exemples sont Grand ou Petit. Trois nœuds sont alloués au départ.
    extraNodes entier Chaque nœud supplémentaire ajoute 3 workers supplémentaires.
  • Propriété Airflow :

    Nom Type Description
    airflowVersion string Version d’Apache Airflow prise en charge. Par exemple, 2.4.3.
    airflowRequirements <chaîne> de tableau Bibliothèques Python que vous voulez utiliser. Par exemple, ["flask-bcrypy=0.7.1"]. Peut être une liste délimitée par des virgules.
    airflowEnvironmentVariables Objet (paire clé/valeur) Variables d’environnement que vous voulez utiliser. Par exemple, { "SAMPLE_ENV_NAME": "test" }.
    gitSyncProperties gitSyncProperty Propriétés de configuration Git.
    enableAADIntegration booléen Permet à Microsoft Entra ID de se connecter au gestionnaire du flux de travail.
    userName chaîne ou null Nom d’utilisateur pour l’authentification de base.
    mot de passe chaîne ou null Mot de passe pour l’authentification de base.
  • Propriété de synchronisation git :

    Nom Type Description
    gitServiceType string Service Git où se trouve le référentiel souhaité. Les valeurs sont GitHub, ADO, GitLab ou BitBucket.
    gitCredentialType string Type d’informations d’identification Git. Les valeurs sont PAT (pour Jeton d’accès personnel), SPN (pris en charge uniquement par ADO) et Aucun.
    référentiel string Lien vers le référentiel.
    branche string Branche à utiliser dans le référentiel.
    username string Nom d’utilisateur GitHub.
    Informations d'identification string Valeur du jeton d’accès personnel.
    tenantId string ID de locataire du principal de service (pris en charge uniquement par ADO).
  • Réponses :

    Nom Code d’état Type Description
    Accepté 200 Factory OK
    Non autorisé 401 Erreur cloud Tableau avec plus de détails sur les erreurs

Exemples

Examinez les exemples suivants.

Exemple de demande :

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

Corps de l’exemple :

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

Exemple de réponse :

Status code: 200 OK

Corps de la réponse :

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

Voici quelques exemples de charge utile d’API :

  • Propriétés de synchronisation Git pour GitHub avec PAT :

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Propriétés de synchronisation Git pour ADO avec PAT :

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Propriétés de synchronisation git pour ADO avec principal de service :

    "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>
    }
    
  • Propriétés de synchronisation Git pour un référentiel public GitHub :

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

Importer un package privé avec la synchronisation Git

Ce processus facultatif s’applique uniquement lorsque vous utilisez des packages privés.

Ce processus suppose que votre package privé a été synchronisé automatiquement via la synchronisation Git. Vous ajoutez le package en tant qu’exigence dans l’interface utilisateur du gestionnaire du flux de travail, ainsi que le préfixe de chemin d’accès /opt/airflow/git/\<repoName\>/, si vous vous connectez à un référentiel ADO. Utilisez /opt/airflow/git/\<repoName\>.git/ pour tous les autres services Git.

Par exemple, si votre package privé se trouve dans /dags/test/private.whl dans un référentiel GitHub, vous devez ajouter le /opt/airflow/git/\<repoName\>.git/dags/test/private.whl requis dans l’environnement du gestionnaire du flux de travail.

Capture d’écran montrant la section des exigences Airflow dans la boîte de dialogue de configuration de l’environnement Airflow qui s’affiche lors de la création d’un runtime d’intégration du gestionnaire du flux de travail.