Automatiser la configuration des notifications

Vous pouvez configurer Cloud Build pour vous envoyer des notifications de compilation à Slack, à Google Chat, à un serveur SMTP, à un point de terminaison HTTP ou à une instance BigQuery à l'aide des systèmes d'alerte Cloud Build. Cette page explique comment automatiser le processus de configuration pour le système d'alerte souhaité.

Automatiser la configuration des notifications

Cloud Build fournit un script de configuration que vous pouvez utiliser pour automatiser la configuration des notifications. Pour configurer les notifications à l'aide du script de configuration, procédez comme suit :

Slack

Configurer

Les sections suivantes décrivent les étapes à suivre avant d'automatiser la configuration des notifications pour votre système d'alerte.

Activation des API…

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Obtenir et stocker des identifiants

  1. Créez une application Slack pour l'espace de travail Slack auquel vous souhaitez envoyer des notifications.

  2. Activez les webhooks entrants pour publier des messages depuis Cloud Build vers Slack.

  3. Accédez à votre application Slack pour localiser l'URL du webhook entrant. Votre URL ressemblera à ce qui suit :

    http://hooks.slack.com/services/...
    
  4. Stockez l'URL du webhook entrant dans Secret Manager :

    1. Ouvrez la page Secret Manager dans la console Google Cloud:

      Ouvrir la page Secret Manager

    2. Cliquez sur Créer un secret.

    3. Attribuez un nom à votre secret.

    4. Sous Valeur du secret, ajoutez l'URL du webhook entrant pour votre application Slack.

    5. Pour enregistrer votre secret, cliquez sur Créer un secret.

Écrire un fichier de configuration du système d'alerte

Rédigez un fichier de configuration du système d'alerte pour configurer votre système d'alerte Slack et filtrer les événements de compilation :

Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ filter utilise Common Expression Language avec la variable disponible, build, pour filtrer les événements de compilation à l'état SUCCESS :

  apiVersion: cloud-build-notifiers/v1
  kind: SlackNotifier
  metadata:
    name: example-slack-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
      template:
        type: golang
        uri: gs://example-gcs-bucket/slack.json
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

Où :

  • webhook-url est la variable de configuration utilisée dans cet exemple pour référencer le chemin d'URL du webhook Slack stocké dans Secret Manager. Le nom de la variable que vous spécifiez ici doit correspondre au champ name sous secrets.
  • project-id est l'ID du projet Google Cloud.
  • secret-name est le nom de votre secret contenant l'URL de votre webhook Slack.
  • Le champ uri fait référence au fichier slack.json. Ce fichier contient un modèle JSON hébergé sur Cloud Storage et représente votre message de notification dans votre espace Slack.

Pour afficher cet exemple, consultez le fichier de configuration du système d'alerte pour le système d'alerte Slack.

Exécuter le script d'automatisation

Pour automatiser la configuration des notifications pour votre système d'alerte :

  1. Clonez le dépôt cloud-build-notifier.

  2. Configurez la Google Cloud CLI avec votre ID de projet et votre région:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Où :

    • project-id correspond à votre ID de projet Google Cloud.
    • region est la région dans laquelle déployer le système d'alerte.
  3. Exécutez la commande suivante à la racine du dépôt :

    ./setup.sh slack config-path -t template-path -s secret-name

Où :

  • config-path est le chemin d'accès au fichier de configuration de vos systèmes d'alerte.
  • template-path est le chemin d'accès au fichier de modèle de vos systèmes d'alerte. Votre fichier de modèle de notification contient le modèle JSON hébergé sur Cloud Storage et représente votre message de notification. Vous pouvez inclure votre fichier de modèle de système d'alerte en tant que chemin d'accès à l'aide de cette variable ou dans le champ uri de votre fichier de configuration de système d'alerte.
  • secret-name est le nom du secret stocké dans Secret Manager.

Une fois le script exécuté, le message suivant s'affiche :

** NOTIFIER SETUP COMPLETE **

Votre système d'alerte est maintenant configuré. Vous pouvez afficher le script complet dans le dépôt cloud-build-notifier ou exécuter ./setup.sh --help pour obtenir les instructions d'utilisation associées au script.

SMTP

Configurer

Les sections suivantes décrivent les étapes à suivre avant d'automatiser la configuration des notifications pour votre système d'alerte.

Activation des API…

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Stockage des identifiants

  1. Stockez le mot de passe du compte de messagerie de l'expéditeur dans Secret Manager :

  2. Ouvrez la page Secret Manager dans la console Google Cloud :

    Ouvrir la page Secret Manager

  3. Cliquez sur Créer un secret.

  4. Attribuez un nom à votre secret.

  5. Sous Valeur du secret, ajoutez le mot de passe du compte de messagerie de l'expéditeur.

  6. Pour enregistrer votre secret, cliquez sur Créer un secret.

Écrire un fichier de configuration du système d'alerte

Rédigez un fichier de configuration du système d'alerte pour configurer votre système d'alerte SMTP et filtrer les événements de compilation :

Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ filter utilise Common Expression Language avec la variable disponible, build, pour filtrer les événements de compilation à l'état SUCCESS :

 apiVersion: cloud-build-notifiers/v1
 kind: SMTPNotifier
 metadata:
   name: example-smtp-notifier
 spec:
   notification:
     filter: build.status == Build.Status.SUCCESS
     delivery:
       server: server-host-name
       port: "port"
       sender: sender-email
       from: from-email
       recipients:
         - recipient-email
         # optional: more emails here
       password:
         secretRef: smtp-password
      template:
        type: golang
        uri: gs:example-gcs-bucket/smtp.html
   secrets:
   - name: smtp-password
     value: projects/project-id/secrets/secret-name/versions/latest

Où :

  • server-host-name est l'adresse de votre serveur SMTP.
  • port est le port qui gère les requêtes SMTP. Cette valeur doit être spécifiée sous forme de chaîne.
  • sender-email est l'adresse e-mail du compte de l'expéditeur, visible par le paramètre server-host-name spécifié.
  • from-email est l'adresse e-mail visible par les destinataires.
  • recipient-email est une liste d'une ou de plusieurs adresses e-mail destinées à recevoir les messages de l'expéditeur.
  • smtp-password est la variable de configuration utilisée dans cet exemple pour faire référence au mot de passe du compte de messagerie de l'expéditeur stocké dans Secret Manager. Le nom de la variable que vous spécifiez ici doit correspondre au champ name sous secrets.
  • project-id est l'ID du projet Google Cloud.
  • secret-name est le nom de votre secret contenant le mot de passe du compte de messagerie de l'expéditeur.
  • Le champ uri fait référence au fichier smtp.html. Ce fichier fait référence à un modèle HTML hébergé sur Cloud Storage et représente votre e-mail de notification.

Pour afficher cet exemple, consultez le fichier de configuration du système d'alerte pour le système d'alerte SMTP.

Exécuter le script d'automatisation

Pour automatiser la configuration des notifications pour votre système d'alerte, procédez comme suit:

  1. Clonez le dépôt cloud-build-notifier.

  2. Configurez la Google Cloud CLI avec l'ID et la région de votre projet :

    gcloud config set project project-id
    gcloud config set run/region region
    

    Où :

    • project-id correspond à votre ID de projet Google Cloud.
    • region est la région dans laquelle déployer le système d'alerte.
  3. Exécutez la commande suivante à la racine du dépôt :

    ./setup.sh smtp config-path -t template-path -s secret-name

Où :

  • config-path est le chemin d'accès au fichier de configuration de vos systèmes d'alerte.
  • template-path est le chemin d'accès au fichier de modèle de vos systèmes d'alerte. Votre fichier de modèle de notification contient le modèle JSON hébergé sur Cloud Storage et représente votre message de notification. Vous pouvez inclure votre fichier de modèle de système d'alerte en tant que chemin d'accès à l'aide de cette variable ou dans le champ uri de votre fichier de configuration de système d'alerte.
  • secret-name est le nom du secret stocké dans Secret Manager.

Une fois le script exécuté, le message suivant s'affiche :

** NOTIFIER SETUP COMPLETE **

Votre système d'alerte est maintenant configuré. Vous pouvez afficher le script complet dans le dépôt cloud-build-notifier ou exécuter ./setup.sh --help pour obtenir les instructions d'utilisation associées au script.

BigQuery

Configurer

Les sections suivantes décrivent les étapes à suivre avant d'automatiser la configuration des notifications pour votre système d'alerte.

Activation des API…

Enable the Cloud Build, Cloud Run, Pub/Sub, and BigQuery APIs.

Enable the APIs

Accorder des autorisations

Autorisez votre compte de service Cloud Run à créer et à écrire des tables BigQuery, ainsi qu'à récupérer des données Artifact Registry associées à votre compilation :

  1. Accédez à la page "IAM" de la console Google Cloud :

    Ouvrir la page IAM

  2. Recherchez le compte de service Compute Engine par défaut associé à votre projet :

    Votre compte de service Compute Engine par défaut ressemblera à ce qui suit, où project-number est le numéro de votre projet :

        project-number-compute@developer.gserviceaccount.com
    
  3. Cliquez sur l'icône en forme de crayon sur la ligne contenant votre compte de service Compute Engine par défaut.

    L'onglet Modifier l'accès s'affiche.

    1. Cliquez sur Ajouter un autre rôle.

    2. Ajoutez les rôles suivants :

      • Lecteur Artifact Registry
      • Éditeur de données BigQuery

        Le rôle Lecteur Artifact Registry vous permet d'extraire des données pour vos images. L'éditeur de données BigQuery vous offre un accès en lecture et en écriture à vos données.

    3. Cliquez sur Enregistrer.

Écrire un fichier de configuration du système d'alerte

Rédigez un fichier de configuration du système d'alerte pour configurer votre système d'alerte BigQuery et filtrer les événements de compilation :

Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ filter utilise Common Expression Language avec la variable build pour filtrer les événements de compilation avec un ID de déclencheur spécifié :

 apiVersion: cloud-build-notifiers/v1
 kind: BigQueryNotifier
 metadata:
   name: example-bigquery-notifier
 spec:
   notification:
     filter: build.build_trigger_id == "123e4567-e89b-12d3-a456-426614174000"
     delivery:
       table: projects/project-id/datasets/dataset-name/tables/table-name
     template:
       type: golang
       uri: gs://example-gcs-bucket/bq.json

Où :

  • project-id est l'ID du projet Google Cloud.
  • dataset-name est le nom que vous souhaitez donner à l'ensemble de données.
  • table-name est le nom que vous souhaitez donner à la table.

Le table-name du fichier de configuration de votre système d'alerte peut se référer à :

  • une table inexistante ;
  • une table vide sans schéma ;
  • une table existante avec un schéma qui correspond aux spécifications de schéma du système d'alerte BigQuery.

  • Le champ uri fait référence au fichier bq.json. Ce fichier fait référence à un modèle JSON hébergé sur Cloud Storage et représente les informations à insérer dans votre table BigQuery.

Pour afficher cet exemple, consultez le fichier de configuration du système d'alerte pour le système d'alerte BigQuery.

Exécuter le script d'automatisation

Pour automatiser la configuration des notifications pour votre système d'alerte :

  1. Clonez le dépôt cloud-build-notifier.

  2. Configurez la Google Cloud CLI avec l'ID et la région de votre projet :

    gcloud config set project project-id
    gcloud config set run/region region
    

    Où :

    • project-id correspond à votre ID de projet Google Cloud.
    • region est la région dans laquelle déployer le système d'alerte.
  3. Exécutez la commande suivante à la racine du dépôt :

     ./setup.sh bigquery -t config-path -t template-path
    

    Où :

    • config-path est le chemin d'accès au fichier de configuration de vos systèmes d'alerte.
    • template-path est le chemin d'accès au fichier de modèle de vos systèmes d'alerte. Votre fichier de modèle de notification contient le modèle JSON hébergé sur Cloud Storage et représente votre message de notification. Vous pouvez inclure votre fichier de modèle de système d'alerte en tant que chemin d'accès à l'aide de cette variable ou dans le champ uri de votre fichier de configuration de système d'alerte.

    Une fois le script exécuté, le message suivant s'affiche :

    ** NOTIFIER SETUP COMPLETE **
    

    Votre système d'alerte est maintenant configuré. Vous pouvez afficher le script complet dans le dépôt cloud-build-notifier ou exécuter ./setup.sh --help pour obtenir les instructions d'utilisation associées au script.

HTTP

Configurer

Les sections suivantes décrivent les étapes à suivre avant d'automatiser la configuration des notifications pour votre système d'alerte.

Activation des API…

Enable the Cloud Build, Cloud Run, and Pub/Sub APIs.

Enable the APIs

Écrire un fichier de configuration du système d'alerte

Rédigez un fichier de configuration du système d'alerte pour configurer votre système d'alerte HTTP et filtrer les événements de compilation :

Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ filter utilise Common Expression Language avec la variable disponible, build, pour filtrer les événements de compilation à l'état SUCCESS :

    apiVersion: cloud-build-notifiers/v1
    kind: HTTPNotifier
    metadata:
      name: example-http-notifier
    spec:
      notification:
        filter: build.status == Build.Status.SUCCESS
        delivery:
          # The `http(s)://` protocol prefix is required.
          url: url
        template:
          type: golang
          uri: gs://example-gcs-bucket/http.json

Où :

  • url est la variable de configuration utilisée dans cet exemple pour spécifier l'URL de votre requête.
  • url est l'URL que vous souhaitez spécifier en tant que serveur destinataire.
  • Le champ uri fait référence au fichier http.json. Ce fichier fait référence à un modèle JSON hébergé sur Cloud Storage et représente la charge utile JSON au point de terminaison du webhook.

Pour afficher cet exemple, consultez le fichier de configuration du système d'alerte pour le système d'alerte HTTP.

Exécuter le script d'automatisation

Pour automatiser la configuration des notifications pour votre système d'alerte :

  1. Clonez le dépôt cloud-build-notifier.

  2. Configurez la Google Cloud CLI avec votre ID de projet et votre région:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Où :

    • project-id correspond à votre ID de projet Google Cloud.
    • region est la région dans laquelle déployer le système d'alerte.
  3. Exécutez la commande suivante à la racine du dépôt :

     ./setup.sh http -t config-path
    

    Où :

    • config-path est le chemin d'accès au fichier de configuration de vos systèmes d'alerte.

Une fois le script exécuté, le message suivant s'affiche :

** NOTIFIER SETUP COMPLETE **

Votre système d'alerte est maintenant configuré. Vous pouvez afficher le script complet dans le dépôt cloud-build-notifier ou exécuter ./setup.sh --help pour obtenir les instructions d'utilisation associées au script.

Google Chat

Configurer

Les sections suivantes décrivent les étapes à suivre avant d'automatiser la configuration des notifications pour votre système d'alerte.

Activation des API…

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Obtenir et stocker des identifiants

  1. Créer un espace dans Google Chat.

  2. Dans l'espace créé, créez un webhook entrant pour publier des messages depuis Cloud Build vers Google Chat. Votre URL doit ressembler à ceci:

    https://chat.googleapis.com/v1/spaces/...

  3. Stockez l'URL du webhook entrant dans Secret Manager :

    1. Ouvrez la page Secret Manager dans la console Google Cloud:

      Ouvrir la page Secret Manager

    2. Cliquez sur Créer un secret.

    3. Attribuez un nom à votre secret.

    4. Sous Valeur du secret, ajoutez l'URL du webhook entrant pour votre espace Google Chat.

    5. Pour enregistrer votre secret, cliquez sur Créer un secret.

Écrire un fichier de configuration du système d'alerte

Rédigez un fichier de configuration du système d'alerte pour configurer votre système d'alerte Google Chat et filtrer les événements de compilation :

Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ filter utilise Common Expression Language avec la variable disponible, build, pour filtrer les événements de compilation à l'état SUCCESS :

  apiVersion: cloud-build-notifiers/v1
  kind: GoogleChatNotifier
  metadata:
    name: example-googlechat-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

Où :

  • webhook-url est la variable de configuration utilisée dans cet exemple pour faire référence au chemin d'URL du webhook Google Chat stocké dans Secret Manager. Le nom de la variable que vous spécifiez ici doit correspondre au champ name sous secrets.
  • project-id est l'ID du projet Google Cloud.
  • secret-name est le nom de votre secret contenant l'URL de votre webhook Google Chat.

Pour afficher cet exemple, consultez le fichier de configuration du système d'alerte pour le système d'alerte Google Chat.

Exécuter le script d'automatisation

Pour automatiser la configuration des notifications pour votre système d'alerte, procédez comme suit:

  1. Clonez le dépôt cloud-build-notifier.

  2. Configurez la Google Cloud CLI avec votre ID de projet et votre région:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Où :

    • project-id correspond à votre ID de projet Google Cloud.
    • region est la région dans laquelle déployer le système d'alerte.
  3. Exécutez la commande suivante à la racine du dépôt :

./setup.sh googlechat config-path -s secret-name

Où :

  • config-path est le chemin d'accès au fichier de configuration de vos systèmes d'alerte.
  • secret-name est le nom du secret stocké dans Secret Manager.

Une fois le script exécuté, le message suivant s'affiche :

** NOTIFIER SETUP COMPLETE **

Votre système d'alerte est maintenant configuré. Vous pouvez afficher le script complet dans le dépôt cloud-build-notifier ou exécuter ./setup.sh --help pour obtenir les instructions d'utilisation associées au script.

Problèmes GitHub

Configurer

Les sections suivantes décrivent les étapes à suivre avant d'automatiser la configuration des notifications pour votre système d'alerte.

Activation des API…

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Enable the APIs

Obtenir et stocker des identifiants

  1. Créez un jeton d'accès personnel GitHub:

    1. Accédez aux paramètres GitHub pour créer un jeton.
    2. Sélectionnez le niveau d'accès repo.

    3. Cliquez sur Générer un jeton.

  2. Stockez votre jeton dans Secret Manager :

    1. Ouvrez la page Secret Manager dans la console Google Cloud:

      Ouvrir la page Secret Manager

    2. Cliquez sur Créer un secret.

    3. Attribuez un nom à votre secret.

    4. Sous Valeur du secret, ajoutez votre jeton GitHub.

    5. Pour enregistrer votre secret, cliquez sur Créer un secret.

Écrire un fichier de configuration de modèle

Rédigez un modèle de fichier de configuration décrivant le format requis pour les problèmes GitHub créés:

Dans l'exemple de fichier de configuration de modèle suivant, les champs title et body utilisent des variables de substitution de la compilation :

{
    "title": "Build {{.Build.BuildTriggerId}}: {{.Build.Status}}",
    "body": "[{{.Build.ProjectId}}] {{.Build.BuildTriggerId}} status: **{{.Build.Status}}**\n\n[View Logs]({{.Build.LogUrl}})"
}

Pour afficher l'exemple, consultez le fichier de configuration du modèle du système d'alerte de problèmes GitHub.

Vous pouvez définir des champs supplémentaires à partir des paramètres de corps disponibles du point de terminaison de l'API GitHub pour créer un problème.

Écrire un fichier de configuration du système d'alerte

Écrivez un fichier de configuration d'alerte pour configurer votre système d'alerte Google Chat et filtrer des événements de compilation:

Dans l'exemple de fichier de configuration du système d'alerte suivant, le champ filter utilise Common Expression Language avec la variable disponible, build, pour filtrer les événements de compilation à l'état SUCCESS :

apiVersion: cloud-build-notifiers/v1
kind: GitHubIssuesNotifier
metadata:
  name: example-githubissues-notifier
spec:
  notification:
    filter: build.status == Build.Status.FAILURE
    template: 
      type: golang
      uri: gs://project-id-notifiers-config/template-file-name
    delivery:
      githubToken:
        secretRef: github-token
      githubRepo: myuser/myrepo
  secrets:
  - name: github-token
    value: projects/project-id/secrets/secret-name/versions/latest

Où :

  • githubToken est la variable de configuration utilisée dans cet exemple pour faire référence au jeton GitHub stocké dans Secret Manager. Le nom de la variable que vous spécifiez ici doit correspondre au champ name sous secrets.
  • project-id-notifiers-config est l'emplacement où votre modèle sera importé. Le bucket sera créé s'il n'existe pas déjà.
  • template-file-name correspond au nom de votre fichier de modèle.
  • myuser/myrepo est le nom du dépôt pour lequel des problèmes seront créés.
  • project-id est l'ID du projet Google Cloud.
  • secret-name est le nom de votre secret contenant votre jeton GitHub.

Pour voir l'exemple, consultez le fichier de configuration du système d'alerte pour le système d'alerte Google Chat.

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.

Exécuter le script d'automatisation

Pour automatiser la configuration des notifications pour votre système d'alerte :

  1. Clonez le dépôt cloud-build-notifier.

  2. Configurez la Google Cloud CLI avec votre ID de projet et votre région:

    gcloud config set project project-id
    gcloud config set run/region region
    

    Où :

    • project-id correspond à votre ID de projet Google Cloud.
    • region est la région dans laquelle déployer le système d'alerte.
  3. Exécutez la commande suivante à la racine du dépôt :

    ./setup.sh githubissues config-path -t template-path -s secret-name

Où :

  • config-path est le chemin d'accès au fichier de configuration de vos systèmes d'alerte.
  • template-path est le chemin d'accès au fichier de modèle de vos systèmes d'alerte. Votre fichier de modèle de notification contient le modèle JSON hébergé sur Cloud Storage et représente votre message de notification. Vous pouvez inclure votre fichier de modèle de système d'alerte en tant que chemin d'accès à l'aide de cette variable ou dans le champ uri de votre fichier de configuration de système d'alerte.
  • secret-name est le nom du secret stocké dans Secret Manager.

Une fois le script exécuté, le message suivant s'affiche :

** NOTIFIER SETUP COMPLETE **

Votre système d'alerte est maintenant configuré. Vous pouvez afficher le script complet dans le dépôt cloud-build-notifier ou exécuter ./setup.sh --help pour obtenir les instructions d'utilisation associées au script.

Étape suivante