Managed Airflow (3e génération) | Managed Airflow (2e génération) | Managed Airflow (1re génération héritée)
Ce guide explique comment créer un pipeline CI/CD pour tester, synchroniser et déployer des DAG dans votre environnement Managed Airflow à partir de votre dépôt GitHub.
Si vous ne souhaitez synchroniser que les données d'autres services, consultez Transférer des données depuis d'autres services.
Présentation du pipeline CI/CD
Le pipeline CI/CD permettant de tester, de synchroniser et de déployer des DAG comporte les étapes suivantes :
Vous apportez une modification à un DAG et la transférez vers une branche de développement de votre dépôt.
Vous ouvrez une demande d'extraction par rapport à la branche principale de votre dépôt.
Cloud Build exécute des tests unitaires pour vérifier que votre DAG est valide.
Votre demande d'extraction est approuvée et fusionnée dans la branche principale de votre dépôt.
Cloud Build synchronise votre environnement de développement Managed Airflow avec ces nouvelles modifications.
Vous vérifiez que le DAG fonctionne comme prévu dans votre environnement de développement.
Si votre DAG fonctionne comme prévu, vous l'importez dans votre environnement de production Managed Airflow.
Objectifs
- Exécuter une vérification automatisée avant l'envoi à l'aide de Cloud Build. Cette vérification exécute des tests unitaires pour un DAG.
- Synchroniser les DAG de votre environnement de développement Managed Service pour Apache Airflow avec les DAG de votre dépôt GitHub.
Avant de commencer
Ce guide part du principe que vous travaillez avec deux environnements Managed Airflow identiques : un environnement de développement et un environnement de production.
Pour les besoins de ce guide, vous ne configurez un pipeline CI/CD que pour l'environnement de développement. Assurez-vous que l'environnement que vous utilisez n'est pas un environnement de production.
Ce guide part du principe que vos DAG et leurs tests sont stockés dans un dépôt GitHub.
L'exemple de pipeline CI/CD illustre le contenu d'un exemple de dépôt. Les DAG et les tests sont stockés dans le répertoire
dags/, avec les fichiers d'exigences, le fichier de contraintes et les fichiers de configuration de compilation Cloud Build stockés au niveau supérieur. L'utilitaire de synchronisation des DAG et ses exigences se trouvent dans le répertoireutils.
Créer un job de vérification avant l'envoi et des tests unitaires
Le premier job Cloud Build exécute une vérification avant l'envoi, qui exécute des tests unitaires pour vos DAG.
Ajouter des tests unitaires
Si ce n'est pas déjà fait, créez des tests unitaires pour vos
DAG. Enregistrez ces tests avec les DAG dans votre dépôt, chacun avec le suffixe _test. Par exemple, le fichier de test du DAG dans example_dag.py est example_dag_test.py. Il s'agit des tests qui s'exécutent en tant que vérification avant l'envoi dans votre dépôt.
Créer une configuration YAML Cloud Build pour la vérification avant l'envoi
Dans votre dépôt, créez un fichier YAML nommé test-dags.cloudbuild.yaml qui configure votre job Cloud Build pour les vérifications avant l'envoi. Il comporte trois étapes :
- Installer les dépendances requises par vos DAG.
- Installer les dépendances requises par vos tests unitaires.
- Exécuter les tests DAG.
Créer le déclencheur de compilation Cloud Build pour la vérification avant l'envoi
Suivez le guide Créer des dépôts à partir de GitHub pour créer un déclencheur basé sur une application GitHub avec les configurations suivantes :
Nom :
test-dagsÉvénement : demande d'extraction
Source - Dépôt : sélectionnez votre dépôt
Source - Branche de base :
^main$(remplacezmainpar le nom de la branche de base de votre dépôt, si nécessaire)Source - Contrôle des commentaires : non requis
Configuration de compilation - Fichier de configuration Cloud Build :
/test-dags.cloudbuild.yaml(chemin d'accès à votre fichier de compilation)
Créer un job de synchronisation des DAG et ajouter un script d'utilitaire de DAG
Ensuite, configurez un job Cloud Build qui exécute un script d'utilitaire de DAG. Le script d'utilitaire de ce job synchronise vos DAG avec votre environnement Managed Airflow une fois qu'ils sont fusionnés dans la branche principale de votre dépôt.
Ajouter le script d'utilitaire de DAG
Ajoutez le script d'utilitaire de DAG à votre dépôt. Ce script d'utilitaire copie tous les fichiers DAG du répertoire dags/ de votre dépôt dans un répertoire temporaire, en ignorant tous les fichiers Python non DAG. Le script utilise ensuite la bibliothèque cliente Cloud Storage pour importer tous les fichiers de ce répertoire temporaire dans le répertoire dags/ du bucket de votre environnement Managed Airflow.
Créer une configuration YAML Cloud Build pour la synchronisation des DAG
Dans votre dépôt, créez un fichier YAML nommé add-dags-to-composer.cloudbuild.yaml qui configure votre job Cloud Build pour la synchronisation des DAG. Il comporte deux étapes :
Installer les dépendances requises par le script d'utilitaire de DAG.
Exécuter le script d'utilitaire pour synchroniser les DAG de votre dépôt avec votre environnement Managed Airflow.
Créer le déclencheur de compilation Cloud Build
Suivez le guide Créer des dépôts à partir de GitHub pour créer un déclencheur basé sur une application GitHub avec les configurations suivantes :
Nom :
add-dags-to-composerÉvénement : déployer sur une branche
Source - Dépôt : sélectionnez votre dépôt
Source - Branche de base :
^main$(remplacezmainpar le nom de la branche de base de votre dépôt, si nécessaire)Source - Filtre par fichiers inclus (glob) :
dags/**Configuration de compilation - Fichier de configuration Cloud Build :
/add-dags-to-composer.cloudbuild.yaml(chemin d'accès à votre fichier de compilation)
Dans la configuration avancée, ajoutez deux variables de substitution :
_DAGS_DIRECTORY: répertoire dans lequel se trouvent les DAG dans votre dépôt. Si vous utilisez l'exemple de dépôt de ce guide, il s'agit dedags/._DAGS_BUCKET: bucket Cloud Storage contenant ledags/répertoire dans votre environnement de développement Managed Airflow environnement. Omettez le préfixegs://. Par exemple :us-central1-example-env-1234ab56-bucket.
Tester votre pipeline CI/CD
Dans cette section, suivez un flux de développement de DAG qui utilise les déclencheurs Cloud Build que vous venez de créer.
Exécuter un job avant l'envoi
Créez une demande d'extraction dans votre branche principale pour tester votre compilation. Recherchez votre vérification avant l'envoi sur la page. Cliquez sur Détails , puis sélectionnez Afficher plus de détails sur Google Cloud Build pour afficher les journaux de compilation dans la Google Cloud console.
Si votre vérification avant l'envoi a échoué, consultez Résoudre les échecs de compilation.
Vérifier que votre DAG fonctionne dans votre environnement de développement
Une fois votre demande d'extraction approuvée, fusionnez-la dans votre branche principale. Affichez vos
résultats de compilation à l'aide de la
Google Cloud console. Si vous disposez de nombreux déclencheurs Cloud Build, vous pouvez filtrer vos compilations sur le nom du déclencheur add-dags-to-composer.
Une fois le job de synchronisation Cloud Build réussi, le DAG synchronisé s'affiche dans votre environnement de développement Managed Airflow. Vous pouvez alors vérifier que le DAG fonctionne comme prévu.
Ajouter le DAG à votre environnement de production
Une fois que le DAG fonctionne comme prévu, ajoutez-le manuellement à votre environnement de production. Pour ce faire, importez le fichier DAG
dans le répertoire dags/ du bucket de votre environnement de production Managed Airflow.
Si votre job de synchronisation des DAG a échoué ou si votre DAG ne se comporte pas comme prévu dans votre environnement de développement Managed Airflow, consultez Résoudre les échecs de compilation.
Résoudre les échecs de compilation
Cette section explique comment résoudre les scénarios d'échec de compilation courants.
Que faire si ma vérification avant l'envoi a échoué ?
Dans votre demande d'extraction, cliquez sur Détails , puis sélectionnez Afficher plus de détails sur Google Cloud Build pour afficher les journaux de compilation dans la Google Cloud console. Utilisez ces journaux pour vous aider à déboguer le problème lié à votre DAG. Une fois les problèmes résolus, validez le correctif et transférez-le vers votre branche. La vérification avant l'envoi s'exécute à nouveau, et vous pouvez continuer à itérer à l'aide des journaux comme outil de débogage.
Que faire si mon job de synchronisation des DAG a échoué ?
Affichez vos résultats de compilation à l'aide de la Google Cloud console
. Si vous disposez de nombreux déclencheurs Cloud Build, vous pouvez filtrer vos compilations sur le nom du déclencheur add-dags-to-composer. Examinez les journaux du job de compilation et résolvez les erreurs. Si vous avez besoin d'aide supplémentaire pour résoudre les erreurs, utilisez
les canaux d'assistance.
Que faire si mon DAG ne fonctionne pas correctement dans mon environnement Managed Airflow ?
Si votre DAG ne fonctionne pas comme prévu dans votre environnement de développement Managed Airflow, ne le promouvez pas manuellement dans votre environnement de production Managed Airflow. Effectuez plutôt l'une des opérations suivantes :
- Restaurez la demande d'extraction avec les modifications qui ont interrompu votre DAG pour le rétablir à l'état immédiatement antérieur à vos modifications (cela restaure également tous les autres fichiers de cette demande d'extraction).
- Créez une demande d'extraction pour rétablir manuellement les modifications apportées au DAG interrompu.
- Créez une demande d'extraction pour corriger les erreurs dans votre DAG.
L'une de ces étapes déclenche une nouvelle vérification avant l'envoi et, lors de la fusion, le job de synchronisation des DAG.
Étape suivante
- Exécuter des environnements Airflow locaux
- Écrire des DAG
- Planifier et déclencher des DAG
- Tester des DAG