Cloud Composer 1 | Cloud Composer 2
Ce guide explique comment créer un pipeline CI/CD pour tester, synchroniser et déployer des DAG dans votre environnement Cloud Composer à partir de votre dépôt GitHub.
Si vous souhaitez synchroniser uniquement les données d'autres services, consultez la section Transférer des données depuis d'autres services.
Présentation du pipeline CI/CD
![Schéma de l'architecture illustrant les étapes du flux. Le pré-envoi et la vérification des relations publiques se trouvent dans la section GitHub, tandis que la synchronisation et la vérification manuelles des DAG se trouvent dans la section Google Cloud.](https://cloud.google.com/static/composer/docs/images/dag-cicd-integration-architecture.png?authuser=9&hl=fr)
Le pipeline CI/CD pour tester, synchroniser et déployer les DAG comporte les étapes suivantes:
Vous modifiez un DAG et transférez cette modification vers une branche de développement de votre dépôt.
Vous ouvrez une demande d'extraction sur la branche principale de votre dépôt.
Cloud Build exécute des tests unitaires pour vérifier la validité de votre DAG.
Votre demande d'extraction est approuvée et fusionnée avec la branche principale de votre dépôt.
Cloud Build synchronise votre environnement Cloud Composer de développement avec ces nouvelles modifications.
Vous allez vérifier que le DAG se comporte comme prévu dans votre environnement de développement.
Si votre DAG fonctionne comme prévu, importez-le dans votre environnement de production Cloud Composer.
Objectifs
Avant de commencer
Ce guide suppose que vous travaillez avec deux environnements Cloud Composer identiques: un environnement de développement et un environnement de production.
Dans le cadre de ce guide, vous configurez un pipeline CI/CD uniquement pour votre environnement de développement. Assurez-vous que l'environnement que vous utilisez n'est pas un environnement de production.
Ce guide suppose que vos DAG et leurs tests sont stockés dans un dépôt GitHub.
L'exemple de pipeline CI/CD montre 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 Cloud Build stockés au premier niveau. L'utilitaire de synchronisation des DAG et ses exigences se trouvent dans le répertoireutils
.Cette structure peut être utilisée pour les environnements Airflow 1, Airflow 2, Cloud Composer 1 et Cloud Composer 2.
Créer une tâche de vérification avant envoi et des tests unitaires
La première tâche Cloud Build exécute une vérification avant envoi, qui exécute des tests unitaires pour vos DAG.
Ajouter des tests unitaires
Si vous ne l'avez pas déjà fait, créez des tests unitaires pour vos DAG. Enregistrez ces tests avec les DAG de 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 envoi dans votre dépôt.
Créer une configuration YAML Cloud Build pour la vérification avant envoi
Dans votre dépôt, créez un fichier YAML nommé test-dags.cloudbuild.yaml
qui configure votre tâche Cloud Build pour les vérifications avant envoi. Il y a trois étapes:
- Installez les dépendances nécessaires à vos DAG.
- Installez les dépendances nécessaires à vos tests unitaires.
- Exécutez les tests DAG.
Créer le déclencheur Cloud Build pour la vérification avant 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: choisissez votre dépôt.
Source : branche de base :
^main$
(remplacezmain
par le nom de la branche de base de votre dépôt, si nécessaire)Source (contrôle des commentaires: non requis)
Configuration de la compilation : fichier de configuration de la compilation Cloud :
/test-dags.cloudbuild.yaml
(chemin d'accès à votre fichier de compilation)
Créer un job de synchronisation des DAG et ajouter un script utilitaire de DAG
Configurez ensuite une tâche Cloud Build qui exécute un script utilitaire des DAG. Le script utilitaire de cette tâche synchronise vos DAG avec votre environnement Cloud Composer après leur fusion avec la branche principale de votre dépôt.
Ajouter le script utilitaire des DAG
Ajoutez le script utilitaire DAG à votre dépôt. Ce script utilitaire copie tous les fichiers DAG situés dans le 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 vers le répertoire dags/
du bucket de votre environnement Cloud Composer.
Créer une configuration YAML Cloud Build pour synchroniser les DAG
Dans votre dépôt, créez un fichier YAML nommé add-dags-to-composer.cloudbuild.yaml
qui configure votre tâche Cloud Build pour la synchronisation des DAG. Elle comporte deux étapes:
Installez les dépendances nécessaires au script de l'utilitaire des DAG.
Exécutez le script utilitaire pour synchroniser les DAG de votre dépôt avec votre environnement Cloud Composer.
Créer le déclencheur 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: choisissez votre dépôt.
Source : branche de base :
^main$
(remplacezmain
par le nom de la branche de base de votre dépôt, si nécessaire)Source – Filtre pour les fichiers inclus (glob):
dags/**
Configuration de la compilation : fichier de configuration de la compilation Cloud :
/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
: le 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 le répertoiredags/
dans votre environnement Cloud Composer de développement. 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 de pré-envoi
Créez une demande d'extraction vers votre branche principale pour tester votre build. Recherchez l'option de vérification avant envoi sur la page. Cliquez sur Details (Détails) et choisissez View more details on Google Cloud Build (Afficher plus d'informations sur Google Cloud Build) pour consulter vos journaux de compilation dans la console Google Cloud.
![Capture d'écran d'une vérification GitHub appelée test-dags avec une flèche rouge pointant vers le nom du projet entre parenthèses](https://cloud.google.com/static/composer/docs/images/dag-cicd-integration-github-check.png?authuser=9&hl=fr)
Si la vérification avant envoi a échoué, consultez Résoudre les échecs de compilation.
Vérifier que votre DAG fonctionne dans votre environnement de développement Cloud Composer
Une fois votre demande d'extraction approuvée, fusionnez-la avec votre branche principale. Utilisez la console Google Cloud pour afficher les résultats de la compilation. Si vous disposez de nombreux déclencheurs Cloud Build, vous pouvez filtrer vos compilations par nom de déclencheur add-dags-to-composer
.
Une fois la tâche de synchronisation Cloud Build réussie, le DAG synchronisé apparaît dans votre environnement de développement Cloud Composer. 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 Cloud Composer de production.
Si votre tâche de synchronisation des DAG a échoué ou si votre DAG ne se comporte pas comme prévu dans votre environnement Cloud Composer de développement, consultez la section 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 la vérification avant envoi préalable a échoué ?
À partir de votre demande d'extraction, cliquez sur Details (Détails) et choisissez View more details on Google Cloud Build (Afficher plus de détails sur Google Cloud Build) pour consulter vos journaux de compilation dans la console Google Cloud. 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 envoi s'exécute à nouveau, et vous pouvez continuer à itérer en utilisant les journaux comme outil de débogage.
Que se passe-t-il si mon job de synchronisation des DAG a échoué ?
Utilisez la console Google Cloud pour afficher les résultats de la compilation. Si vous disposez de nombreux déclencheurs Cloud Build, vous pouvez filtrer vos compilations par nom de déclencheur add-dags-to-composer
. Examinez les journaux de la tâche de compilation et résolvez les erreurs. Si vous avez besoin d'une aide supplémentaire pour résoudre les erreurs, passez par les canaux d'assistance.
Que faire si mon DAG ne fonctionne pas correctement dans mon environnement Cloud Composer ?
Si votre DAG ne fonctionne pas comme prévu dans votre environnement de développement Cloud Composer, ne le promouvez pas manuellement dans votre environnement Cloud Composer de production. Effectuez plutôt l'une des opérations suivantes :
- Annulez la demande d'extraction avec les modifications qui ont interrompu votre DAG pour le restaurer à l'état qui précède cet état juste avant vos modifications (cela entraîne également la restauration de tous les autres fichiers de la demande d'extraction d'extraction).
- Créez une demande d'extraction pour annuler manuellement les modifications apportées au DAG défectueux.
- Créez une demande d'extraction pour corriger les erreurs dans votre DAG.
Si vous suivez l'une de ces étapes, une nouvelle vérification avant envoi est déclenchée. Lors de la fusion, la tâche de synchronisation des DAG.