Partager via


Synchroniser un dépôt 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 !

Important

Le 1er janvier 2026, vous ne pourrez plus créer de nouvelles instances Airflow à l’aide du Gestionnaire d’orchestration de flux de travail d’ADF. Nous vous recommandons de migrer toutes les charges de travail Apache Airflow (Apache Airflow dans Azure Data Factory) vers des travaux Apache Airflow dans Microsoft Fabric avant le 31 décembre 2025.

Pour plus d’informations ou pour obtenir du support pendant votre migration vers Apache Airflow dans Microsoft Fabric, contactez le support Microsoft.

Prérequis

Utiliser l'interface utilisateur du gestionnaire du flux de travail

Pour synchroniser votre dépôt GitHub à l'aide de l'interface utilisateur du gestionnaire du flux de travail :

  1. Vérifiez que votre dépôt contient les dossiers et fichiers nécessaires :

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

    • Plugins/ : Pour intégrer des 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 s'affiche 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 du 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'identification :

    • Aucun (pour un dépôt public) : lorsque vous sélectionnez cette option, veillez à ce que la visibilité de votre dépôt soit publique. Renseignez ensuite les détails :

      • URL du dépôt Git (obligatoire) : URL de clonage pour le dépôt GitHub que vous souhaitez.
      • Branche Git (obligatoire) : branche actuelle, où se trouve le dépôt Git que vous souhaitez.
    • 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'identification Git par PAT 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'informations d'identification. Une fois que vous avez sélectionné cette option, renseignez les champs restants en fonction du type de service Git sélectionné :

      • URL du dépôt Git (obligatoire) : URL de clonage du dépôt Git à synchroniser.
      • Branche Git (obligatoire) : branche du dépôt à synchroniser.
      • ID d'application du principal de service (obligatoire) : ID d'application du principal de service ayant accès au dépôt ADO à synchroniser.
      • Secret du principal de service (obligatoire) : un secret généré manuellement dans le principal de service, dont la valeur est utilisée pour s'authentifier et accéder au dépôt ADO.
      • ID de locataire pour le principal de service (obligatoire) : ID de locataire pour le principal de service.

      Capture d'écran montrant les options d'identification Git par SPN 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 les champs restants avec les informations requises.

  6. Sélectionnez Create (Créer).

Utiliser l’API REST

Pour synchroniser votre dépôt GitHub à l'aide de 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 URI :

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

    Nom Type Description
    nom string Nom de l'environnement Airflow.
    properties propertyType Propriétés de configuration pour l'environnement
  • Type de propriétés :

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

    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é de calcul :

    Nom Type Description
    emplacement 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 incluent « Large » ou « Small ». Trois nœuds sont alloués au départ.
    extraNodes entier Chaque nœud supplémentaire ajoute trois Workers de plus.
  • Propriété Airflow :

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

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

    Nom Code d’état Type Description
    Acceptée 200 Usine OK
    Non autorisé 401 Cloud d'erreur Tableau avec plus de détails sur l'erreur

Exemples

Passez en revue les exemples suivants.

Exemple de demande :

HTTP
PUT https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/abnarain-rg/providers/Microsoft.DataFactory/factories/ambika-df/integrationruntimes/sample-2?api-version=2018-06-01

Exemple de corps :

{
   "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 dépôt 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 que dépendance dans l'interface utilisateur du gestionnaire du flux de travail, accompagné du préfixe de chemin /opt/airflow/git/\<repoName\>/, si vous vous connectez à un dépôt 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 dépôt GitHub, vous devez ajouter la dépendance /opt/airflow/git/\<repoName\>.git/dags/test/private.whl dans l'environnement du gestionnaire du flux de travail.

Capture d'écran montrant la section des exigences d'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.