Cloud Build peut vous informer des mises à jour de l'état de vos compilations en vous envoyant des notifications aux canaux sélectionnés. En plus des systèmes d'alerte gérés par Cloud Build, tels que Slack ou SMTP, vous pouvez également utiliser la bibliothèque fournie dans le dépôt cloud-build-notifiers pour créer votre propre système d'alerte.
Cette page explique comment créer votre propre système d'alerte.
Avant de commencer
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Installez le langage de programmation Go.
Installez la Google Cloud CLI.
Configurer
Ouvrez une fenêtre de terminal sur votre ordinateur.
Clonez et accédez au dépôt cloud-build-notifiers :
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersAjoutez un répertoire pour votre propre système d'alerte et accédez-y, où DIRECTORY_NAME est le nom de votre répertoire :
mkdir DIRECTORY_NAME && cd DIRECTORY_NAMEInitialisez les modules go dans votre nouveau répertoire, où DIRECTORY_NAME correspond au nom du nouveau répertoire :
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAMEUn fichier
go.moddoit maintenant s'afficher dans votre répertoire.Ajoutez la ligne suivante à votre fichier
go.modpour vous assurer que vous utilisez la dernière version des systèmes d'alerte :replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Vos dépendances sont maintenant configurées et vous êtes prêt à créer votre propre système d'alerte.
Créer votre propre système d'alerte
Le dépôt cloud-build-notifiers contient un répertoire lib/notifiers. Dans le répertoire lib/notifiers, vous trouverez un fichier nommé notifier.go. Ce fichier contient le framework que vous pouvez utiliser pour créer votre propre système d'alerte.
Vous devrez définir dans votre fichier principal deux méthodes pour créer un système d'alerte.
Dans le nouveau répertoire, créez un fichier nommé
main.go.Dans
main.go, importez le framework de la bibliothèque de systèmes d'alerte et toutes les autres dépendances :Définissez une méthode "main" pour votre système d'alerte. Dans cet exemple,
loggercorrespond au nom du système d'alerte :La méthode
mainutilise la méthodeMaindéfinie dans le fichiernotifier.go, qui permet de configurer les fichiers binaires du système d'alerte.Définissez une structure pour votre système d'alerte, où vous définirez les variables de votre interface. Dans cet exemple,
loggercorrespond au nom du système d'alerte :Ajoutez la fonctionnalité de système d'alerte. L'interface du système d'alerte est définie par deux méthodes :
SetUp: la méthodeSetUpaccepte une configuration, récupère les secrets, et extrait de la configuration les filtres spécifiés pour les stocker en tant que prédicat CEL (Common Expression Language) pouvant être utilisé pour envoyer des notifications. Pour en savoir plus sur le langage CEL, consultez le dépôtcel-spec.SendNotification: la méthodeSendNotificationpermet d'envoyer des notifications au canal ou au service sélectionné.La définition du système d'alerte est disponible dans
notifier.goet dans la documentation Go.Dans l'exemple suivant, l'interface du système d'alerte est définie à l'aide des méthodes
SetUpetSendNotificationpour imprimer les journaux de compilation, avecloggercomme nom de votre système d'alerte :Votre fichier
main.gofinal doit ressembler au fichier suivant. Dans cet exemple,loggerest utilisé comme nom du système d'alerte.
Configurez ensuite votre système d'alerte.
Configurer les notifications
Rédigez un fichier de configuration du système d'alerte pour configurer votre système d'alerte et filtrer les événements de compilation :
Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ
filterutilise le langage CEL avec la variable disponible,build, pour filtrer les événements de compilation à l'étatSUCCESS:Où :
logging-samplecorrespond au nom du système d'alerte.
Pour en savoir plus sur les champs supplémentaires que vous pouvez filtrer, consultez la ressource Build. Pour obtenir d'autres exemples de filtrage, consultez la section Utiliser le CEL pour filtrer les événements de compilation.
Importez votre fichier de configuration du système d'alerte dans un bucket Cloud Storage :
Si vous n'avez pas de bucket Cloud Storage, exécutez la commande suivante pour en créer un, où BUCKET_NAME est le nom que vous souhaitez attribuer au bucket, sous réserve des règles de dénomination.
gcloud storage buckets create gs://BUCKET_NAME/Importez le fichier de configuration du système d'alerte dans votre bucket :
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAMEOù :
BUCKET_NAMEest le nom du bucket.CONFIG_FILE_NAMEest le nom de votre fichier de configuration.
Compilez et déployez votre système d'alerte :
Créez un fichier Dockerfile pour
logging-sample:Compilez et déployez le système d'alerte à l'aide du fichier
cloudbuild.yamlsuivant.Où :
_CONFIG_PATHest le chemin d'accès à la configuration de votre système d'alerte, tel quegs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
Pour exécuter le fichier
cloudbuild.yaml, transmettez le chemin d'accès au système d'alerte en tant que variable de substitution.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEAccordez des autorisations Pub/Sub pour créer des jetons d'authentification dans votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorOù :
PROJECT_IDest l'ID de votre projet Google Cloud ;PROJECT_NUMBERest le numéro de votre projet Google Cloud .
Créez un compte de service pour représenter l'identité de votre abonnement Pub/Sub :
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"Vous pouvez utiliser
cloud-run-pubsub-invokerou un nom unique dans votre projet Google Cloud .Accordez au compte de service
cloud-run-pubsub-invokerl'autorisation Cloud RunInvoker:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invokerOù :
SERVICE_NAMEcorrespond au nom du service Cloud Run dans lequel vous déployez l'image.PROJECT_IDest l'ID de votre projet Google Cloud ;
Créez le sujet
cloud-buildspour recevoir des messages de mise à jour de compilation pour votre système d'alerte :gcloud pubsub topics create cloud-buildsVous pouvez également définir un nom de sujet personnalisé dans votre fichier de configuration de compilation afin que les messages soient envoyés à ce sujet personnalisé. Dans ce cas, vous devez créer un sujet portant le même nom de sujet personnalisé :
gcloud pubsub topics create topic-namePour en savoir plus, consultez Sujets Pub/Sub pour les notifications de compilation.
Créez un abonné push Pub/Sub pour votre système d'alerte :
gcloud pubsub subscriptions create subscriber-id \ --topic=cloud-builds \ --push-endpoint=service-url \ --push-auth-service-account=cloud-run-pubsub-invoker@project-id.iam.gserviceaccount.comOù :
subscriber-idest le nom que vous souhaitez donner à votre abonnement.service-urlest l'URL générée par Cloud Run pour votre nouveau service.project-idest l'ID de votre projet Google Cloud ;
Les notifications pour votre projet Cloud Build sont maintenant configurées. Vous recevrez une notification dans votre canal la prochaine fois que vous appellerez une compilation correspondant au filtre que vous avez configuré.
Tester les notifications
Pour tester les notifications de l'exemple utilisé dans ce guide, vous pouvez appeler une compilation en exécutant la commande gcloud builds submit.
Dans l'exemple suivant, nous spécifions success.yaml comme chemin de configuration. L'exécution de cette commande devrait entraîner une compilation minimale réussie. Vous devriez également voir une sortie de vos journaux de compilation.
gcloud builds submit --no-source --config=success.yaml
Où success.yaml correspond à :
steps:
- name: busybox
args: ["true"]
Dans l'exemple suivant, nous spécifions failure.yaml comme chemin de configuration. L'exécution de cette commande doit entraîner l'échec de la compilation. Au lieu de voir la sortie de vos journaux de compilation, un résultat vous informe qu'il n'y a pas de correspondance pour les filtres CEL spécifiés dans votre source.
gcloud builds submit --no-source --config=failure.yaml
Où failure.yaml correspond à :
steps:
- name: busybox
args: ["false"]
Si vous avez créé un système d'alerte configuré pour effectuer une tâche autre que consigner la sortie dans les journaux de service Cloud Run, vous pouvez également exécuter la commande gcloud builds submit pour tester vos notifications.
Pour examiner les erreurs associées à votre compilation, consultez les journaux Cloud Run de votre service. Pour en savoir plus, consultez la section Afficher les journaux dans Cloud Run.
Étapes suivantes
- En savoir plus sur les systèmes d'alerte Cloud Build
- Découvrez comment vous abonner aux notifications de compilation.