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
- Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte Azure gratuit avant de commencer. Créez ou sélectionnez une instance Data Factory existante dans la région où la préversion du gestionnaire du flux de travail est prise en charge.
- Référentiel GitHub : Vous devez accéder à un Référentiel GitHub.
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 :
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.
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.
Sélectionnez l’un des types de service Git pris en charge suivants :
- GitHub
- ADO
- GitLab
- BitBucket
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
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.
Renseignez le reste des champs avec les informations requises.
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.