Ce tutoriel explique comment configurer un pipeline d'intégration/de déploiement continu (CI/CD) pour le traitement des données en appliquant des méthodes CI/CD à l'aide de produits gérés sur Google Cloud. Les data scientists et les analystes peuvent adapter les méthodologies mises en œuvre dans les pratiques CI/CD pour garantir la haute qualité, la facilité de gestion et l'adaptabilité des processus de données et des workflows. Vous pouvez appliquer les méthodes suivantes :
- Contrôle des versions du code source
- Création, test et déploiement automatiques d'applications
- Isolation et séparation des environnements de développement et de test de l'environnement de production
- Procédures reproductibles pour la configuration des environnements
Ce tutoriel est destiné aux data scientists et aux analystes qui créent et exécutent des tâches récurrentes de traitement des données afin de structurer leurs activités de recherche et développement (R&D), et de gérer de manière systématique et automatique les charges de travail de traitement des données.
Architecture de déploiement
Dans ce guide, vous allez utiliser les produits Google Cloud suivants :
- Cloud Build, pour développer un pipeline CI/CD afin de créer, déployer et tester un workflow de traitement des données, et effectuer le traitement des données. Cloud Build est un service géré qui exécute votre build sur Google Cloud sous la forme d'une série d'étapes de compilation où chaque étape est exécutée dans un conteneur Docker.
- Cloud Composer, pour définir et exécuter les étapes du workflow, telles que le démarrage du traitement des données, le test et la vérification des résultats. Cloud Composer est un service géré basé sur Apache Airflow qui offre un environnement dans lequel vous pouvez créer, planifier, surveiller et gérer des workflows complexes, tels que le workflow de traitement des données développé dans ce tutoriel.
- Cloud Dataflow pour exécuter l'exemple Apache Beam WordCount comme exemple de traitement des données.
Le pipeline CI/CD
De manière générale, le pipeline CI/CD comprend les étapes suivantes :
- Cloud Build crée un package de l'exemple WordCount dans un fichier JAR (Java Archive) à exécution automatique à l'aide du compilateur Maven. Le compilateur Maven est un conteneur dans lequel Maven est installé. Lorsqu'une étape de compilation est configurée pour utiliser le compilateur Maven, Maven exécute les tâches.
- Cloud Build importe le fichier JAR dans Cloud Storage.
- Cloud Build exécute des tests unitaires sur le code du workflow de traitement des données et déploie le code du workflow dans Cloud Composer.
- Cloud Composer récupère le fichier JAR et exécute la tâche de traitement des données sur Cloud Dataflow.
Le schéma suivant présente une vue détaillée des étapes du pipeline CI/CD.
Dans ce tutoriel, les déploiements dans les environnements de test et de production sont séparés en deux pipelines Cloud Build différents : un pipeline de test et un pipeline de production.
Dans le schéma précédent, le pipeline de test comprend les étapes suivantes :
- Un développeur valide les modifications de code dans Cloud Source Repositories.
- Les modifications de code déclenchent une compilation test dans Cloud Build.
- Cloud Build crée le fichier JAR auto-exécutable et le déploie dans le bucket JAR de test sur Cloud Storage.
- Cloud Build déploie les fichiers de test dans les buckets de fichiers de test sur Cloud Storage.
- Cloud Build définit dans Cloud Composer la variable utilisée pour référencer le fichier JAR qui vient d'être déployé.
- Cloud Build teste le graphe orienté acyclique (DAG, Directed Acyclic Graph) du workflow de traitement des données et le déploie dans le bucket Cloud Composer sur Cloud Storage.
- Le fichier DAG du workflow est déployé dans Cloud Composer.
- Cloud Build déclenche l'exécution du workflow de traitement des données qui vient d'être déployé.
- Une fois le test d'intégration du workflow de traitement des données passé, un message est publié dans Pub/Sub contenant une référence au dernier fichier JAR auto-exécutable (obtenu à partir des variables Airflow) dans les données du message.
Dans le schéma précédent, le pipeline de production comprend les étapes suivantes :
- Le pipeline de déploiement en production est déclenché lorsqu'un message est publié dans un sujet Pub/Sub.
- Un développeur approuve manuellement le pipeline de déploiement en production et la compilation est exécutée.
- Cloud Build copie le dernier fichier JAR auto-exécutable à partir du bucket JAR de test vers le bucket JAR de production sur Cloud Storage.
- Cloud Build teste le DAG du workflow de production de traitement des données et le déploie dans le bucket Cloud Composer sur Cloud Storage.
- Le fichier DAG du workflow de production est déployé dans Cloud Composer.
Dans ce tutoriel, le workflow de production est déployé dans le même environnement Cloud Composer que le workflow de test afin de fournir une vue consolidée de tous les workflows. Pour les besoins de ce tutoriel, différents buckets Cloud Storage sont utilisés pour stocker les données d'entrée et de sortie afin de séparer les deux environnements.
Pour séparer complètement les deux environnements, vous devez créer plusieurs environnements Cloud Composer dans différents projets, séparés par défaut les uns des autres. Cette séparation permet de sécuriser votre environnement de production. Cette approche n'entre pas dans le cadre de ce tutoriel. Pour en savoir plus sur l'accès aux ressources de plusieurs projets Google Cloud, consultez la page Définir des autorisations de compte de service.
Le workflow de traitement des données
Les instructions relatives à l'exécution du workflow de traitement des données par Cloud Composer sont définies dans un graphe orienté acyclique (DAG) écrit en Python. Le DAG définit toutes les étapes du workflow de traitement des données, ainsi que les dépendances entre elles.
Le pipeline CI/CD déploie automatiquement la définition du DAG à partir de Cloud Source Repositories dans Cloud Composer, dans chaque compilation. Ce processus garantit que Cloud Composer est toujours à jour avec la dernière définition du workflow sans qu'aucune intervention humaine ne soit requise.
En plus du workflow de traitement des données, la définition du DAG pour l'environnement de test comprend une étape de test de bout en bout. Cette étape de test permet de vérifier que le workflow de traitement des données s'exécute correctement.
Le workflow de traitement des données est illustré dans le schéma suivant.
Le workflow de traitement des données comprend les étapes suivantes :
- Exécution du processus de données WordCount dans Dataflow.
Téléchargement des trois fichiers de sortie générés par le processus WordCount :
download_result_1
download_result_2
download_result_3
Téléchargement du fichier de référence appelé
download_ref_string
.Vérification des résultats par rapport au fichier de référence. Ce test d'intégration agrège les trois résultats et compare les résultats agrégés au fichier de référence.
Publication d'un message sur Pub/Sub une fois que le test d'intégration a réussi.
L'utilisation d'un framework d'orchestration de tâches, tel que Cloud Composer, pour gérer le workflow de traitement des données permet de réduire la complexité du code du workflow.
Les tests
Outre le test d'intégration qui vérifie le workflow de traitement des données de bout en bout, ce tutoriel comporte deux tests unitaires. Les tests unitaires sont des tests automatiques exécutés sur le code de traitement des données et le code du workflow de traitement des données. Le test sur le code de traitement des données est écrit en Java et s'exécute automatiquement lors du processus de compilation Maven. Le test sur le code du workflow de traitement des données est écrit en Python et s'exécute en tant qu'étape de compilation indépendante.
Objectifs
- Configurer l'environnement Cloud Composer
- Créer des buckets Cloud Storage pour vos données
- Créer les pipelines de compilation, de test et de production
- Configurer le déclencheur de compilation
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Source Repositories, Cloud Composer, and Dataflow APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Source Repositories, Cloud Composer, and Dataflow APIs.
Exemple de code
L'exemple de code se trouve dans deux dossiers :
- Le dossier
env-setup
contient des scripts shell pour la configuration initiale de l'environnement Google Cloud. Le dossier
source-code
contient du code qui est développé au fil du temps, qui doit être contrôlé par la source et déclenche des processus automatiques de compilation et de test. Ce dossier contient les sous-dossiers suivants :- Le dossier
data-processing-code
contient le code source du processus Apache Beam. - Le dossier
workflow-dag
contient les définitions DAG de Cloud Composer pour les workflows de traitement des données, ainsi que les étapes de conception, de mise en œuvre et de test du processus Cloud Dataflow. - Le dossier
build-pipeline
contient deux configurations Cloud Build, l'une pour le pipeline de test et l'autre pour le pipeline de production. Ce dossier contient également un script d'assistance pour les pipelines.
- Le dossier
Dans le cadre de ce tutoriel, les fichiers de code source pour le traitement des données et pour le workflow DAG se trouvent dans des dossiers différents du même dépôt de code source. Dans un environnement de production, les fichiers de code source se trouvent généralement dans leurs propres dépôts de code source, et sont gérés par des équipes différentes.
Configurer l'environnement
Dans ce tutoriel, vous allez exécuter toutes les commandes dans Cloud Shell. Cloud Shell apparaît sous la forme d'une fenêtre en bas de Google Cloud Console.
Dans Google Cloud Console, ouvrez Cloud Shell :
Clonez l'exemple de dépôt de code :
git clone https://github.com/GoogleCloudPlatform/ci-cd-for-data-processing-workflow.git
Exécutez un script pour définir les variables d'environnement :
cd ~/ci-cd-for-data-processing-workflow/env-setup source set_env.sh
Le script définit les variables d'environnement suivantes :
- L'ID de votre projet Google Cloud
- Votre région et votre zone
- Le nom des buckets Cloud Storage utilisés par le pipeline de compilation et le workflow de traitement des données
Comme les variables d'environnement ne sont pas conservées entre les sessions, si votre session Cloud Shell se ferme ou se déconnecte pendant que vous suivez le tutoriel, vous devez reconfigurer les variables d'environnement.
Créer l'environnement Cloud Composer
Dans ce tutoriel, vous allez configurer un environnement Cloud Composer.
Dans Cloud Shell, ajoutez le rôle Extension de l'agent de service de l'API Cloud Composer v2 (
roles/composer.ServiceAgentV2Ext
) au compte d'agent de service Cloud Composer:gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \ --member serviceAccount:service-$PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \ --role roles/composer.ServiceAgentV2Ext
Dans Cloud Shell, créez l'environnement Cloud Composer :
gcloud composer environments create $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION \ --image-version composer-2.0.14-airflow-2.2.5
Exécutez un script pour définir les variables de l'environnement Cloud Composer. Les variables sont requises pour les DAG de traitement des données.
cd ~/ci-cd-for-data-processing-workflow/env-setup chmod +x set_composer_variables.sh ./set_composer_variables.sh
Le script définit les variables d'environnement suivantes :
- L'ID de votre projet Google Cloud
- Votre région et votre zone
- Le nom des buckets Cloud Storage utilisés par le pipeline de compilation et le workflow de traitement des données
Extraire les propriétés de l'environnement Cloud Composer
Cloud Composer utilise un bucket Cloud Storage pour stocker les DAG. Le déplacement d'un fichier de définition de DAG vers ce bucket déclenche la lecture automatique des fichiers par Cloud Composer. Vous avez créé le bucket Cloud Storage pour Cloud Composer lorsque vous avez créé l'environnement Cloud Composer. Dans la procédure suivante, vous allez extraire l'URL des buckets, puis configurer votre pipeline CI/CD pour déployer automatiquement les définitions de DAG dans le bucket Cloud Storage.
Dans Cloud Shell, exportez l'URL du bucket en tant que variable d'environnement :
export COMPOSER_DAG_BUCKET=$(gcloud composer environments describe $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION \ --format="get(config.dagGcsPrefix)")
Exportez le nom du compte de service utilisé par Cloud Composer pour accéder aux buckets Cloud Storage :
export COMPOSER_SERVICE_ACCOUNT=$(gcloud composer environments describe $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION \ --format="get(config.nodeConfig.serviceAccount)")
Créer les buckets Cloud Storage
Dans cette section, vous allez créer un ensemble de buckets Cloud Storage pour stocker les éléments suivants :
- Artefacts des étapes intermédiaires du processus de compilation
- Fichiers d’entrée et de sortie du workflow de traitement des données
- Emplacement de préproduction des tâches Cloud Dataflow dans lequel stocker leurs fichiers binaires
Pour créer les buckets Cloud Storage, procédez comme suit :
Dans Cloud Shell, créez des buckets Cloud Storage, et accordez au compte de service Cloud Composer l'autorisation d'exécuter les workflows de traitement des données :
cd ~/ci-cd-for-data-processing-workflow/env-setup chmod +x create_buckets.sh ./create_buckets.sh
Créer le sujet Pub/Sub
Dans cette section, vous allez créer un sujet Pub/Sub destiné à recevoir les messages envoyés depuis le test d'intégration du workflow de traitement des données afin de déclencher automatiquement le pipeline de compilation en production.
Dans la console Google Cloud, accédez à la page Sujets Pub/Sub.
Cliquez sur Créer un sujet.
Pour configurer le sujet, procédez comme suit :
- Pour l'ID du sujet, saisissez
integration-test-complete-topic
. - Vérifiez que l'option Ajouter un abonnement par défaut est cochée.
- Laissez les autres options décochées.
- Dans le champ Chiffrement, sélectionnez Clé de chiffrement gérée par Google.
- Cliquez sur Créer un sujet.
- Pour l'ID du sujet, saisissez
Transférer le code source vers Cloud Source Repositories
Dans ce tutoriel, vous disposez d'un base de code source que vous devez intégrer au contrôle des versions. L'étape suivante montre comment une base de code est développée et évolue au fil du temps. Chaque envoi de modifications dans le dépôt déclenche le pipeline de compilation, de déploiement et de test.
Dans Cloud Shell, placez le dossier
source-code
dans Cloud Source Repositories :gcloud source repos create $SOURCE_CODE_REPO cp -r ~/ci-cd-for-data-processing-workflow/source-code ~/$SOURCE_CODE_REPO cd ~/$SOURCE_CODE_REPO git init git remote add google \ https://source.developers.google.com/p/$GCP_PROJECT_ID/r/$SOURCE_CODE_REPO git add . git commit -m 'initial commit' git push google master
Il s'agit de commandes standards permettant d'initialiser Git dans un nouveau répertoire et de transférer le contenu vers un dépôt distant.
Créer des pipelines Cloud Build
Dans cette section, vous allez créer les pipelines de compilation qui créent, déploient et testent le workflow de traitement des données.
Accorder l'accès au compte de service Cloud Build
Cloud Build déploie des DAG Cloud Composer et déclenche des workflows, qui sont activés lorsque vous ajoutez un accès supplémentaire au compte de service Cloud Build. Pour en savoir plus sur les différents rôles disponibles lorsque vous utilisez Cloud Composer, consultez la documentation sur le contrôle des accès.
Dans Cloud Shell, ajoutez le rôle
composer.admin
au compte de service Cloud Build afin que la tâche Cloud Build puisse définir des variables Airflow dans Cloud Composer :gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/composer.admin
Ajoutez le rôle
composer.worker
au compte de service Cloud Build afin que la tâche Cloud Build puisse déclencher le workflow de données dans Cloud Composer :gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/composer.worker
Créer le pipeline de compilation et de test
Les étapes du pipeline de compilation et de test sont configurées dans le fichier de configuration YAML.
Dans ce tutoriel, vous allez utiliser les images de compilateur précompilées pour git
, maven
, gsutil
et gcloud
afin d'exécuter les tâches de chaque étape de compilation.
Vous allez utiliser des substitutions de variables de configuration pour définir les paramètres d'environnement au moment de la compilation. L'emplacement du dépôt contenant le code source est défini par les substitutions de variables, ainsi que par l'emplacement des buckets Cloud Storage. La compilation a besoin de ces informations pour déployer le fichier JAR, les fichiers de test et la définition du DAG.
Dans Cloud Shell, envoyez le fichier de configuration du pipeline de compilation pour créer le pipeline dans Cloud Build :
cd ~/ci-cd-for-data-processing-workflow/source-code/build-pipeline gcloud builds submit --config=build_deploy_test.yaml --substitutions=\ REPO_NAME=$SOURCE_CODE_REPO,\ _DATAFLOW_JAR_BUCKET=$DATAFLOW_JAR_BUCKET_TEST,\ _COMPOSER_INPUT_BUCKET=$INPUT_BUCKET_TEST,\ _COMPOSER_REF_BUCKET=$REF_BUCKET_TEST,\ _COMPOSER_DAG_BUCKET=$COMPOSER_DAG_BUCKET,\ _COMPOSER_ENV_NAME=$COMPOSER_ENV_NAME,\ _COMPOSER_REGION=$COMPOSER_REGION,\ _COMPOSER_DAG_NAME_TEST=$COMPOSER_DAG_NAME_TEST
Cette commande indique à Cloud Build d’exécuter une compilation selon la procédure suivante :
Créer et déployer le fichier JAR WordCount auto-exécutable.
- Vérifier le code source.
- Compiler le code source Beam WordCount dans un fichier JAR auto-exécutable.
- Stocker le fichier JAR sur Cloud Storage où il peut être sélectionné par Cloud Composer pour exécuter la tâche de traitement WordCount.
Déployer et configurer le workflow de traitement des données sur Cloud Composer.
- Exécuter le test unitaire sur le code opérateur personnalisé utilisé par le DAG du workflow.
- Déployer le fichier d'entrée du test et le fichier de référence du test sur Cloud Storage. Le fichier d'entrée du test contient les données d'entrée de la tâche de traitement WordCount. Le fichier de référence du test sert de référence pour vérifier le résultat de la tâche de traitement WordCount.
- Définir les variables Cloud Composer de sorte qu'elles pointent vers le fichier JAR qui vient d'être créé.
- Déployer la définition du DAG du workflow dans l'environnement Cloud Composer.
Exécuter le workflow de traitement de données dans l'environnement de test pour déclencher le workflow de traitement de test.
Vérifier le pipeline de compilation et de test
Après avoir envoyé le fichier de compilation, vérifiez les étapes de compilation.
Dans la console Google Cloud, accédez à la page Historique de compilation pour afficher la liste de toutes les compilations précédentes et en cours d'exécution.
Cliquez sur la version en cours d'exécution.
Sur la page Informations sur le build, vérifiez que les étapes de compilation correspondent aux étapes décrites précédemment.
Sur la page Informations sur le build, le champ État du build indique
Build successful
lorsque la compilation est terminée.Dans Cloud Shell, vérifiez que le fichier JAR de l'exemple WordCount a été copié dans le bucket approprié :
gsutil ls gs://$DATAFLOW_JAR_BUCKET_TEST/dataflow_deployment*.jar
Le résultat ressemble à ce qui suit :
gs://…-composer-dataflow-source-test/dataflow_deployment_e88be61e-50a6-4aa0-beac-38d75871757e.jar
Obtenez l'URL de votre interface Web Cloud Composer. Notez-la car elle sera utilisée à l'étape suivante.
gcloud composer environments describe $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION \ --format="get(config.airflowUri)"
Utilisez l'URL de l'étape précédente pour accéder à l'interface utilisateur de Cloud Composer afin de vérifier que le DAG s'est exécuté avec succès. Si la colonne Runs (Exécutions) n’affiche aucune information, attendez quelques minutes et actualisez la page.
Pour vérifier que le DAG du workflow de traitement des données (
test_word_count
) est déployé et en mode d'exécution, maintenez le pointeur sur le cercle vert clair situé en dessous de Runs (Exécutions) et vérifiez qu'il affiche En cours d'exécution.Pour afficher le workflow de traitement des données sous forme de graphique, cliquez sur le cercle vert clair, puis sur la page DAG Runs (Exécutions DAG), cliquez sur ID du DAG :
test_word_count
.Actualisez la page Graph View (Vue graphique) pour mettre à jour l'état d'exécution du DAG en cours. L'exécution du workflow prend généralement entre trois et cinq minutes. Pour vérifier que l'exécution du DAG a bien été effectuée, maintenez le pointeur sur chaque tâche pour vérifier que l'info-bulle indique State: success (État : Opération réussie). L'avant-dernière tâche, appelée
do_comparison
, correspond au test d'intégration qui vérifie le résultat du processus par rapport au fichier de référence.
Une fois le test d'intégration terminé, la dernière tâche, appelée
publish_test_complete
, publie un message dans le sujet Pub/Subintegration-test-complete-topic
, qui sera utilisé pour déclencher le pipeline de compilation en production.Pour vérifier que le message publié contient la référence correcte au dernier fichier JAR, nous pouvons extraire le message de l'abonnement Pub/Sub
integration-test-complete-topic-sub
par défaut.Dans la console Google Cloud, accédez à la page Abonnements.
Cliquez sur integration-test-complete-topic-sub, sélectionnez l'onglet Message, puis cliquez sur Extraire.
Le résultat doit se présenter comme suit :
Créer le pipeline de production
Lorsque le workflow de traitement de test s'exécute avec succès, vous pouvez faire passer la version actuelle du workflow en production. Il existe plusieurs manières de déployer le workflow en production :
- Manuellement
- Par déclenchement automatique lorsque tous les tests sont concluants dans les environnements de test ou de prépoduction
- Par déclenchement automatique provoqué par une tâche planifiée
Dans ce tutoriel, vous déclenchez automatiquement la compilation en production lorsque tous les tests sont concluants dans l'environnement de test. Pour en savoir plus sur les approches automatisées, consultez la page Ingénierie des versions.
Avant de mettre en œuvre l'approche automatisée, vous devez vérifier la compilation du déploiement de production en effectuant un déploiement manuel en production. La version de déploiement de production suit les étapes ci-dessous :
- Copier le fichier JAR WordCount à partir du bucket de test dans le bucket de production.
- Définir les variables Cloud Composer du workflow de production pour pointer vers le fichier JAR récemment passé en production.
- Déployer la définition du DAG du workflow de production dans l'environnement Cloud Composer et exécuter le workflow.
Les substitutions de variables définissent le nom du dernier fichier JAR déployé en production avec les buckets Cloud Storage utilisés par le workflow de traitement de production. Pour créer le pipeline Cloud Build qui déploie le workflow Airflow de production, procédez comme suit :
Dans Cloud Shell, lisez le nom du dernier fichier JAR en imprimant la variable Cloud Composer correspondant au nom du fichier JAR :
export DATAFLOW_JAR_FILE_LATEST=$(gcloud composer environments run $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION variables get -- \ dataflow_jar_file_test 2>&1 | grep -i '.jar')
Utilisez le fichier de configuration du pipeline de compilation,
deploy_prod.yaml,
, pour créer le pipeline dans Cloud Build :cd ~/ci-cd-for-data-processing-workflow/source-code/build-pipeline gcloud builds submit --config=deploy_prod.yaml --substitutions=\ REPO_NAME=$SOURCE_CODE_REPO,\ _DATAFLOW_JAR_BUCKET_TEST=$DATAFLOW_JAR_BUCKET_TEST,\ _DATAFLOW_JAR_FILE_LATEST=$DATAFLOW_JAR_FILE_LATEST,\ _DATAFLOW_JAR_BUCKET_PROD=$DATAFLOW_JAR_BUCKET_PROD,\ _COMPOSER_INPUT_BUCKET=$INPUT_BUCKET_PROD,\ _COMPOSER_ENV_NAME=$COMPOSER_ENV_NAME,\ _COMPOSER_REGION=$COMPOSER_REGION,\ _COMPOSER_DAG_BUCKET=$COMPOSER_DAG_BUCKET,\ _COMPOSER_DAG_NAME_PROD=$COMPOSER_DAG_NAME_PROD
Vérifier le workflow de traitement des données créé par le pipeline de production
Obtenez l'URL de votre interface utilisateur Cloud Composer :
gcloud composer environments describe $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION \ --format="get(config.airflowUri)"
Pour vérifier que le DAG du workflow de production de traitement des données est déployé, accédez à l'URL que vous avez récupérée à l'étape précédente et vérifiez que le DAG
prod_word_count
figure dans la liste des DAG.Sur la page des DAG, dans la ligne
prod_word_count
, cliquez sur Trigger DAG (Déclencher le DAG).
Cliquez sur le logo Airflow ou actualisez la page pour mettre à jour l'état d'exécution du DAG. Un cercle vert clair dans la colonne Exécutions indique que le DAG est en cours d'exécution. Maintenez le pointeur sur le cercle pour afficher l'info-bulle indiquant En cours d'exécution.
Une fois l'exécution réussie, maintenez le pointeur sur le cercle vert foncé situé sous la colonne Exécutions DAG et vérifiez qu'il affiche l'état Opération réussie.
Dans Cloud Shell, répertoriez les fichiers de résultats dans le bucket Cloud Storage :
gsutil ls gs://$RESULT_BUCKET_PROD
Le résultat ressemble à ce qui suit :
gs://…-composer-result-prod/output-00000-of-00003 gs://…-composer-result-prod/output-00001-of-00003 gs://…-composer-result-prod/output-00002-of-00003
Créer les déclencheurs Cloud Build
Dans cette section, vous allez créer le déclencheur Cloud Build qui lie les modifications du code source au processus de compilation de test et celui situé entre le pipeline de test et le pipeline de compilation en production.
Configurer le déclencheur du pipeline de compilation de test
Vous allez configurer un déclencheur Cloud Build qui déclenche une nouvelle compilation lorsque les modifications sont envoyées dans la branche principale du dépôt source.
Dans la console Google Cloud, accédez à la page Déclencheurs de compilation.
Cliquez sur Créer un déclencheur.
Pour configurer les paramètres du déclencheur, procédez comme suit :
- Dans le champ Nom, saisissez
trigger-build-in-test-environment
. - Dans la liste déroulante Région, sélectionnez global (non régional).
- Pour Événement, cliquez sur Déployer sur une branche.
- Pour Source, sélectionnez
data-pipeline-source
. - Dans le champ Nom de la branche, saisissez
master
. - Pour le champ Configuration, cliquez sur Fichier de configuration Cloud Build (yaml ou json).
- Pour le champ Emplacement, cliquez sur Dépôt.
- Dans le champ Emplacement du fichier de configuration Cloud Build, saisissez
build-pipeline/build_deploy_test.yaml
.
- Dans le champ Nom, saisissez
Dans Cloud Shell, exécutez la commande suivante pour obtenir toutes les variables de substitution nécessaires à la compilation. Notez ces valeurs car vous en aurez besoin ultérieurement.
echo "_COMPOSER_DAG_BUCKET : ${COMPOSER_DAG_BUCKET} _COMPOSER_DAG_NAME_TEST : ${COMPOSER_DAG_NAME_TEST} _COMPOSER_ENV_NAME : ${COMPOSER_ENV_NAME} _COMPOSER_INPUT_BUCKET : ${INPUT_BUCKET_TEST} _COMPOSER_REF_BUCKET : ${REF_BUCKET_TEST} _COMPOSER_REGION : ${COMPOSER_REGION} _DATAFLOW_JAR_BUCKET : ${DATAFLOW_JAR_BUCKET_TEST}"
Remarque : La paire nom/valeur de sortie est utilisée pour l'étape suivante.
Sur la page Paramètres du déclencheur, sous Avancé, Variables de substitution, remplacez les variables par les valeurs correspondant à votre environnement, que vous avez obtenues à l'étape précédente. Ajoutez les éléments suivants un à un, puis cliquez sur + Ajouter un élément pour chacune des paires nom-valeur.
_COMPOSER_DAG_BUCKET
_COMPOSER_DAG_NAME_TEST
_COMPOSER_ENV_NAME
_COMPOSER_INPUT_BUCKET
_COMPOSER_REF_BUCKET
_COMPOSER_REGION
_DATAFLOW_JAR_BUCKET
Cliquez sur Créer.
Configurer le déclencheur du pipeline de compilation en production
Vous allez configurer un déclencheur Cloud Build qui déclenche une compilation en production lorsque les tests sont concluants dans l'environnement de test et qu'un message est publié dans le sujet Pub/Sub tests-complete
. Ce déclencheur comprend une étape d'approbation au cours de laquelle la compilation doit être approuvée manuellement avant l'exécution du pipeline de production.
Dans la console Google Cloud, accédez à la page Déclencheurs de compilation.
Cliquez sur Créer un déclencheur.
Pour configurer les paramètres du déclencheur, procédez comme suit :
- Dans le champ Nom, saisissez
trigger-build-in-prod-environment
. - Dans la liste déroulante Région, sélectionnez global (non régional).
- Pour le champ Événement, cliquez sur Message Pub/Sub.
- Pour Abonnement, sélectionnez integration-test-complete-topic.
- Pour Source, sélectionnez
data-pipeline-source
. - Pour Révision, sélectionnez Branche.
- Dans le champ Nom de la branche, saisissez
master
. - Pour le champ Configuration, cliquez sur Fichier de configuration Cloud Build (yaml ou json).
- Pour le champ Emplacement, cliquez sur Dépôt.
- Dans le champ Emplacement du fichier de configuration Cloud Build, saisissez
build-pipeline/deploy_prod.yaml
.
- Dans le champ Nom, saisissez
Dans Cloud Shell, exécutez la commande suivante pour obtenir toutes les variables de substitution nécessaires à la compilation. Notez ces valeurs car vous en aurez besoin ultérieurement.
echo "_COMPOSER_DAG_BUCKET : ${COMPOSER_DAG_BUCKET} _COMPOSER_DAG_NAME_PROD : ${COMPOSER_DAG_NAME_PROD} _COMPOSER_ENV_NAME : ${COMPOSER_ENV_NAME} _COMPOSER_INPUT_BUCKET : ${INPUT_BUCKET_PROD} _COMPOSER_REGION : ${COMPOSER_REGION} _DATAFLOW_JAR_BUCKET_PROD : ${DATAFLOW_JAR_BUCKET_PROD} _DATAFLOW_JAR_BUCKET_TEST : ${DATAFLOW_JAR_BUCKET_TEST}"
Remarque : La paire nom/valeur de sortie est utilisée pour l'étape suivante.
Sur la page Paramètres du déclencheur, sous Avancé, Variables de substitution, remplacez les variables par les valeurs correspondant à votre environnement, que vous avez obtenues à l'étape précédente. Ajoutez les éléments suivants un à un, puis cliquez sur + Ajouter un élément pour chacune des paires nom-valeur.
_COMPOSER_DAG_BUCKET
_COMPOSER_DAG_NAME_PROD
_COMPOSER_ENV_NAME
_COMPOSER_INPUT_BUCKET
_COMPOSER_REGION
_DATAFLOW_JAR_BUCKET_PROD
_DATAFLOW_JAR_BUCKET_TEST
_DATAFLOW_JAR_FILE_LATEST = $(body.message.data)
Pour Approbation, cochez Nécessite une approbation pour exécuter le build.
Cliquez sur Créer.
Tester les déclencheurs
Pour tester le déclencheur, vous devez ajouter un nouveau mot dans le fichier d'entrée de test et effectuer l'ajustement correspondant dans le fichier de référence de test. Vous allez vérifier que le pipeline de compilation est déclenché par l'envoi d'un commit dans Cloud Source Repositories et que le workflow de traitement des données s'exécute correctement avec les fichiers de test mis à jour.
Dans Cloud Shell, ajoutez un mot test à la fin du fichier de test :
echo "testword" >> ~/$SOURCE_CODE_REPO/workflow-dag/support-files/input.txt
Mettez à jour le fichier de référence des résultats de test,
ref.txt
, pour qu'il corresponde aux modifications effectuées dans le fichier d'entrée de test :echo "testword: 1" >> ~/$SOURCE_CODE_REPO/workflow-dag/support-files/ref.txt
Validez les modifications et déployez-les sur Cloud Source Repositories.
cd ~/$SOURCE_CODE_REPO git add . git commit -m 'change in test files' git push google master
Dans la console Google Cloud, accédez à la page Historique.
Pour confirmer qu'une nouvelle compilation de test est déclenchée par l'envoi précédent dans la branche principale, la colonne Ref de la compilation en cours d'exécution indique master.
Dans Cloud Shell, obtenez l'URL de votre interface Web Cloud Composer :
gcloud composer environments describe $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION --format="get(config.airflowUri)"
Une fois la compilation terminée, accédez à l'URL de la commande précédente pour vérifier que le DAG
test_word_count
est en cours d'exécution.Attendez la fin de l'exécution du DAG, signalée par la disparition du cercle vert clair de la colonne Exécutions DAG. Cela prend généralement entre trois et cinq minutes.
Dans Cloud Shell, téléchargez les fichiers de résultats du test :
mkdir ~/result-download cd ~/result-download gsutil cp gs://$RESULT_BUCKET_TEST/output* .
Vérifiez que le mot que vous venez d'ajouter figure dans l'un des fichiers de résultats :
grep testword output*
Le résultat ressemble à ce qui suit :
output-00000-of-00003:testword: 1
Dans la console Google Cloud, accédez à la page Historique.
Vérifiez qu'une compilation en production a bien été déclenchée à la fin du test d'intégration et que la compilation est en attente d'approbation.
Cochez la case à côté de la compilation, cliquez sur Approuver et cliquez sur Approuver dans la boîte de dialogue de confirmation pour exécuter le pipeline de compilation en production.
Une fois la compilation terminée, accédez à l'URL de la commande précédente et déclenchez manuellement le DAG
prod_word_count
pour exécuter le pipeline de production.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer les ressources individuelles
Si vous souhaitez conserver le projet utilisé pour ce tutoriel, procédez comme suit pour supprimer les ressources créées dans ce tutoriel.
Pour supprimer le déclencheur Cloud Build, procédez comme suit :
Dans la console Google Cloud, accédez à la page Déclencheurs.
À côté des déclencheurs que vous avez créés, cliquez sur Plusmore_vert, puis sur Supprimer.
Dans Cloud Shell, supprimez l'environnement Cloud Composer :
gcloud -q composer environments delete $COMPOSER_ENV_NAME \ --location $COMPOSER_REGION
Supprimez les buckets Cloud Storage et leurs fichiers :
gsutil -m rm -r gs://$DATAFLOW_JAR_BUCKET_TEST \ gs://$INPUT_BUCKET_TEST \ gs://$REF_BUCKET_TEST \ gs://$RESULT_BUCKET_TEST \ gs://$DATAFLOW_STAGING_BUCKET_TEST \ gs://$DATAFLOW_JAR_BUCKET_PROD \ gs://$INPUT_BUCKET_PROD \ gs://$RESULT_BUCKET_PROD \ gs://$DATAFLOW_STAGING_BUCKET_PROD
Pour supprimer le sujet Pub/Sub et l'abonnement par défaut, exécutez les commandes suivantes dans Cloud Shell :
gcloud pubsub topics delete integration-test-complete-topic gcloud pubsub subscriptions delete integration-test-complete-topic-sub
Supprimez le dépôt :
gcloud -q source repos delete $SOURCE_CODE_REPO
Supprimez les fichiers et le dossier que vous avez créés :
rm -rf ~/ci-cd-for-data-processing-workflow rm -rf ~/$SOURCE_CODE_REPO rm -rf ~/result-download
Étapes suivantes
- Découvrez la livraison continue de type GitOps avec Cloud Build.
- Découvrez comment automatiser l'infrastructure avec Cloud Composer.
- Apprenez-en plus sur les modèles courants de cas d'utilisation de Cloud Dataflow.
- Découvrez l'ingénierie des versions.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.