Automatizzazione della configurazione per le notifiche

Puoi configurare Cloud Build in modo che ti invii notifiche relative alle build su Slack, Google Chat, un server SMTP, un endpoint HTTP o un'istanza BigQuery che utilizza gli avvisi di Cloud Build. In questa pagina viene spiegato come automatizzare di configurazione del sistema di notifica desiderato.

Automatizzare la configurazione delle notifiche

Cloud Build fornisce uno script di configurazione che puoi utilizzare per automatizzare la configurazione delle notifiche. Per configurare utilizzando lo script di configurazione:

Slack

Configurazione

Le seguenti sezioni descrivono i passaggi da completare prima automatizzando la configurazione delle notifiche per l'autore della notifica.

Abilitazione delle API in corso…

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

Enable the APIs

Ottenere e archiviare le credenziali

  1. Crea un'app Slack per Area di lavoro Slack a cui vuoi inviare notifiche.

  2. Attiva i webhook in arrivo per pubblicare messaggi da Cloud Build a Slack.

  3. Vai all'app Slack per individuare l'URL del webhook in arrivo. Il tuo L'URL sarà simile al seguente:

    http://hooks.slack.com/services/...
    
  4. Archivia l'URL del webhook in arrivo in Secret Manager:

    1. Apri la pagina Secret Manager nella console Google Cloud:

      Apri la pagina di Secret Manager

    2. Fai clic su Crea secret.

    3. Inserisci un nome per il secret.

    4. In Valore secret, aggiungi l'URL webhook in arrivo per l'app Slack.

    5. Per salvare il secret, fai clic su Crea secret.

Scrittura di un file di configurazione del notifier

Scrivi un file di configurazione delle notifiche per configurare il tuo autore di notifiche Slack e applicare filtri creare eventi:

Nel seguente esempio di file di configurazione del notifier, il campo filter utilizza il Common Expression Language con la variabile disponibile build per filtrare gli eventi di compilazione con uno stato 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

Dove:

  • webhook-url è la variabile di configurazione utilizzata in questo esempio per fare riferimento al percorso dell'URL dell'webhook di Slack archiviato in Secret Manager. Il nome della variabile specificato qui deve corrispondere al campo name in secrets.
  • project-id è l'ID del tuo progetto Google Cloud.
  • secret-name è il nome del segreto che contiene l'URL del webhook di Slack.
  • Il campo uri fa riferimento al file slack.json. Questo file contiene un modello JSON ospitato su Cloud Storage e rappresenta il messaggio di notifica per lo spazio Slack.

Per visualizzare l'esempio, consulta il file di configurazione delle notifiche per il notificatore Slack.

Esecuzione dello script dell'automazione

Per automatizzare la configurazione delle notifiche per l'avviso:

  1. Clona il repository cloud-build-notifiers.

  2. Configura Google Cloud CLI con l'ID progetto e la regione:

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

    Dove:

    • project-id è l'ID del tuo progetto Google Cloud.
    • region è la regione in cui eseguire il deployment del notificatore.
  3. Esegui questo comando nella radice del repository:

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

Dove:

  • config-path è il percorso del file di configurazione delle notifiche.
  • template-path è il percorso del file modello per le notifiche. Il tuo il file modello di notifiers contiene il modello JSON integrato in Cloud Storage e rappresenta il messaggio di notifica. Puoi includere il file del modello di notifier come percorso utilizzando questa variabile o all'interno del campo uri del file di configurazione dei notifier.
  • secret-name è il nome del tuo secret archiviato in Secret Manager.

Una volta eseguito lo script, viene visualizzato il seguente messaggio:

** NOTIFIER SETUP COMPLETE **

L'avviso è stato configurato. Puoi visualizzare lo script completo nel repository cloud-build-notifiers o esegui ./setup.sh --help per le istruzioni di utilizzo associate allo script.

SMTP

Configurazione

Le seguenti sezioni descrivono i passaggi da completare prima automatizzando la configurazione delle notifiche per l'autore della notifica.

Abilitazione delle API in corso…

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

Enable the APIs

Archiviazione delle credenziali

  1. Memorizza la password dell'account email del mittente in Secret Manager:

  2. Apri la pagina Secret Manager nella console Google Cloud:

    Apri la pagina di Secret Manager

  3. Fai clic su Crea secret.

  4. Inserisci un nome per il secret.

  5. In Valore secret, aggiungi la password dell'account email del mittente.

  6. Per salvare il secret, fai clic su Crea secret.

Scrittura di un file di configurazione del notifier

Scrivi un file di configurazione delle notifiche per configurare il server di notifica SMTP e filtrare in base a creare eventi:

Nel seguente file di configurazione dell'autore della notifica, il campo filter utilizza Common Expression Language con la variabile disponibile build per filtrare gli eventi di build con lo stato 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

Dove:

  • server-host-name è l'indirizzo del tuo server SMTP.
  • port è la porta che gestirà le richieste SMTP. Questo deve essere specificato come stringa.
  • sender-email è l'indirizzo email dell'account del mittente visualizzato dal valore server-host-name specificato.
  • from-email è l'indirizzo email visualizzato dai destinatari.
  • recipient-email è un elenco di uno o più indirizzi email da ricevere i messaggi inviati dal mittente.
  • smtp-password è la variabile di configurazione utilizzata in questo esempio per fare riferimento alla password dell'account email del mittente tramite Secret Manager. Il nome della variabile qui specificato deve corrisponde al campo name in secrets.
  • project-id è l'ID del tuo progetto Google Cloud.
  • secret-name è il nome del segreto che contiene la password dell'account email del mittente.
  • Il campo uri fa riferimento al file smtp.html. Questo file fa riferimento a un modello HTML ospitato su Cloud Storage e rappresenta l'email di notifica.

Per visualizzare l'esempio, consulta il file di configurazione della funzione di notifica per il server di notifica SMTP.

Esecuzione dello script dell'automazione

Per automatizzare la configurazione delle notifiche per l'avviso:

  1. Clona il repository cloud-build-notifiers.

  2. Configura Google Cloud CLI con l'ID progetto e la regione:

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

    Dove:

    • project-id è l'ID del tuo progetto Google Cloud.
    • region è la regione in cui eseguire il deployment del notificatore.
  3. Esegui questo comando nella radice del repository:

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

Dove:

  • config-path è il percorso del file di configurazione delle notifiche.
  • template-path è il percorso del file modello per le notifiche. Il tuo il file modello di notifiers contiene il modello JSON integrato in Cloud Storage e rappresenta il messaggio di notifica. Puoi includere il file del modello di notifier come percorso utilizzando questa variabile o all'interno del campo uri del file di configurazione dei notifier.
  • secret-name è il nome del tuo secret archiviato in Secret Manager.

Una volta eseguito lo script, viene visualizzato il seguente messaggio:

** NOTIFIER SETUP COMPLETE **

L'avviso è stato configurato. Puoi visualizzare lo script completo nel repository cloud-build-notifiers o esegui ./setup.sh --help per le istruzioni di utilizzo associate allo script.

BigQuery

Configurazione

Le seguenti sezioni descrivono i passaggi da completare prima automatizzando la configurazione delle notifiche per l'autore della notifica.

Abilitazione delle API in corso…

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

Enable the APIs

Concessione di autorizzazioni

Concedi al tuo account di servizio Cloud Run l'autorizzazione per creare e scrivere Tabelle BigQuery e autorizzazione per il recupero dei dati di Artifact Registry correlati alla tua build:

  1. Vai alla pagina IAM nella console Google Cloud:

    Apri la pagina IAM

  2. Individua l'account di servizio predefinito di Compute Engine associato a con il tuo progetto:

    Il tuo account di servizio predefinito di Compute Engine sarà simile al seguente: dove project-number è il numero del tuo progetto:

        project-number-compute@developer.gserviceaccount.com
    
  3. Fai clic sull'icona a forma di matita nella riga contenente l'account di servizio predefinito di Compute Engine.

    Viene visualizzata la scheda Accesso in modifica.

    1. Fai clic su Aggiungi un altro ruolo.

    2. Aggiungi i seguenti ruoli:

      • Artifact Registry Reader
      • BigQuery Data Editor

        Il ruolo Lettore Artifact Registry ti consente di recuperare i dati per le tue immagini. L'editor dati di BigQuery ti consente di accedere in lettura e scrittura ai dati.

    3. Fai clic su Salva.

Scrittura di un file di configurazione per l'invio di notifiche

Scrivi un file di configurazione del notifier per configurare il notifier BigQuery e filtrare in base agli eventi di compilazione:

Nel seguente file di configurazione dell'autore della notifica, il campo filter utilizza Common Expression Language con la variabile build per filtrare gli eventi di build con un ID trigger specificato:

 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

Dove:

  • project-id è l'ID del tuo progetto Google Cloud.
  • dataset-name è il nome che vuoi assegnare al tuo set di dati.
  • table-name è il nome che vuoi assegnare alla tabella.

Il table-name nel file di configurazione dell'avviso può fare riferimento a:

  • una tabella inesistente
  • una tabella vuota senza uno schema
  • una tabella esistente con uno schema che corrisponde alle specifiche dello schema nel notifier BigQuery

  • Il campo uri fa riferimento al file bq.json. Questo file fa riferimento a un modello JSON ospitato su Cloud Storage e rappresenta le informazioni da inserire nella tabella BigQuery.

Per visualizzare l'esempio, vedi il file di configurazione delle notifiche per il generatore di notifiche BigQuery.

Esecuzione dello script di automazione

Per automatizzare la configurazione delle notifiche per l'avviso:

  1. Clona il repository cloud-build-notifiers.

  2. Configura Google Cloud CLI con l'ID progetto e la regione:

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

    Dove:

    • project-id è l'ID del tuo progetto Google Cloud.
    • region è la regione in cui eseguire il deployment del notificatore.
  3. Esegui questo comando nella radice del repository:

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

    Dove:

    • config-path è il percorso del file di configurazione delle notifiche.
    • template-path è il percorso del file modello per le notifiche. Il tuo il file modello di notifiers contiene il modello JSON integrato in Cloud Storage e rappresenta il messaggio di notifica. Puoi includere il file modello per le notifiche come percorso utilizzando questa variabile o nel campo uri del file di configurazione delle notifiche.

    Una volta eseguito lo script, viene visualizzato il seguente messaggio:

    ** NOTIFIER SETUP COMPLETE **
    

    L'avviso è stato configurato. Puoi visualizzare lo script completo nel repository cloud-build-notifiers o eseguire ./setup.sh --help per le istruzioni di utilizzo associate allo script.

HTTP

Configurazione

Le seguenti sezioni descrivono i passaggi da completare prima automatizzando la configurazione delle notifiche per l'autore della notifica.

Abilitazione delle API in corso…

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

Enable the APIs

Scrittura di un file di configurazione per l'invio di notifiche

Scrivi un file di configurazione del notificatore per configurare il notificatore HTTP e filtrare in base agli eventi di compilazione:

Nel seguente esempio di file di configurazione del notifier, il campo filter utilizza il Common Expression Language con la variabile disponibile build per filtrare gli eventi di compilazione con uno stato 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

Dove:

  • url è la variabile di configurazione utilizzata in questo esempio per specificare l'URL per la tua richiesta.
  • url è l'URL che vuoi specificare come server del destinatario.
  • Il campo uri fa riferimento al file http.json. Questo file fa riferimento a un modello JSON ospitato su Cloud Storage e rappresenta il payload JSON per l'endpoint webhook.

Per visualizzare l'esempio, consulta il file di configurazione delle notifiche per il protocollo notificatore.

Esecuzione dello script dell'automazione

Per automatizzare la configurazione delle notifiche per l'avviso:

  1. Clona il repository cloud-build-notifiers.

  2. Configura Google Cloud CLI con l'ID progetto e la regione:

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

    Dove:

    • project-id è l'ID del tuo progetto Google Cloud.
    • region è la regione in cui eseguire il deployment del notificatore.
  3. Esegui questo comando nella radice del repository:

     ./setup.sh http -t config-path
    

    Dove:

    • config-path è il percorso del file di configurazione delle notifiche.

Una volta eseguito lo script, viene visualizzato il seguente messaggio:

** NOTIFIER SETUP COMPLETE **

L'avviso è stato configurato. Puoi visualizzare lo script completo nel repository cloud-build-notifiers o esegui ./setup.sh --help per le istruzioni di utilizzo associate allo script.

Google Chat

Configurazione

Le seguenti sezioni descrivono i passaggi da completare prima automatizzando la configurazione delle notifiche per l'autore della notifica.

Abilitazione delle API in corso…

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

Enable the APIs

Ottenere e archiviare le credenziali

  1. Crea uno spazio in Google Chat.

  2. Nello spazio creato, crea un webhook in arrivo per pubblicare messaggi da Cloud Build in Google Chat. Il tuo URL sarà simile al seguente:

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

  3. Archivia l'URL del webhook in arrivo in Secret Manager:

    1. Apri la pagina Secret Manager nella console Google Cloud:

      Apri la pagina di Secret Manager

    2. Fai clic su Crea secret.

    3. Inserisci un nome per il secret.

    4. In Valore secret, aggiungi l'URL webhook in arrivo per lo spazio di Google Chat.

    5. Per salvare il secret, fai clic su Crea secret.

Scrittura di un file di configurazione per l'invio di notifiche

Scrivi un file di configurazione delle notifiche per configurare l'autore delle notifiche di Google Chat e applicare il filtro creare eventi:

Nel seguente file di configurazione dell'autore della notifica, il campo filter utilizza Common Expression Language con la variabile disponibile build per filtrare gli eventi di build con lo stato 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

Dove:

  • webhook-url è la variabile di configurazione utilizzata in questo esempio per fare riferimento al percorso dell'URL del webhook Google Chat archiviato in Secret Manager. Il nome della variabile specificato qui deve corrispondere al campo name in secrets.
  • project-id è l'ID del tuo progetto Google Cloud.
  • secret-name è il nome del secret che contiene il webhook di Google Chat URL.

Per visualizzare l'esempio, consulta il file di configurazione del notificatore per il notificatore di Google Chat.

Esecuzione dello script dell'automazione

Per automatizzare la configurazione delle notifiche per il tuo notifier:

  1. Clona il repository cloud-build-notifiers.

  2. Configura Google Cloud CLI con l'ID progetto e la regione:

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

    Dove:

    • project-id è l'ID del tuo progetto Google Cloud.
    • region è la regione in cui eseguire il deployment del notificatore.
  3. Esegui questo comando nella radice del repository:

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

Dove:

  • config-path è il percorso del file di configurazione delle notifiche.
  • secret-name è il nome del tuo secret archiviato in Secret Manager.

Una volta eseguito lo script, viene visualizzato il seguente messaggio:

** NOTIFIER SETUP COMPLETE **

L'avviso è stato configurato. Puoi visualizzare lo script completo nel repository cloud-build-notifiers o esegui ./setup.sh --help per le istruzioni di utilizzo associate allo script.

Problemi con GitHub

Configurazione

Le seguenti sezioni descrivono i passaggi da completare prima automatizzando la configurazione delle notifiche per l'autore della notifica.

Abilitazione delle API in corso…

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

Enable the APIs

Ottenere e archiviare le credenziali

  1. Crea un token di accesso personale GitHub:

    1. Vai alle impostazioni di GitHub per creare un nuovo token.
    2. Seleziona l'ambito repo.

    3. Fai clic su Genera token.

  2. Archivia il tuo token in Secret Manager:

    1. Apri la pagina Secret Manager nella console Google Cloud:

      Apri la pagina di Secret Manager

    2. Fai clic su Crea secret.

    3. Inserisci un nome per il secret.

    4. In Valore secret, aggiungi il tuo token GitHub.

    5. Per salvare il secret, fai clic su Crea secret.

Scrittura di un file di configurazione di modello

Scrivi un file di configurazione del modello per descrivere il formato che devono avere i problemi GitHub creati:

Nel file di configurazione del modello di esempio che segue, i campi title e body utilizzano le variabili di sostituzione della build:

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

Per visualizzare l'esempio, vedi il file di configurazione del modello per il notificatore dei problemi di GitHub.

È possibile impostare altri campi dai parametri del corpo disponibili dell'endpoint API GitHub per la creazione di un problema.

Scrittura di un file di configurazione del notifier

Scrivi un file di configurazione delle notifiche per configurare l'autore delle notifiche di Google Chat e applicare il filtro creare eventi:

Nel seguente file di configurazione dell'autore della notifica, il campo filter utilizza Common Expression Language con la variabile disponibile build per filtrare gli eventi di build con lo stato 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

Dove:

  • githubToken è la variabile di configurazione utilizzata in questo esempio per fare riferimento al token GitHub archiviato in Secret Manager. Il nome della variabile specificato qui deve corrispondere al campo name in secrets.
  • project-id-notifiers-config è la posizione in cui verrà caricato il modello e il bucket verrà creato, se non esiste già.
  • template-file-name è il nome del file del modello.
  • myuser/myrepo è il nome del repository in base al quale verranno creati i problemi.
  • project-id è l'ID del tuo progetto Google Cloud.
  • secret-name è il nome del secret che contiene il token GitHub.

Per visualizzare l'esempio, consulta il file di configurazione del notificatore per il notificatore di Google Chat.

Per ulteriori campi in base ai quali puoi filtrare, consulta la risorsa Build. Per ulteriori esempi di filtro, consulta Utilizzare CEL per filtrare gli eventi di build.

Esecuzione dello script dell'automazione

Per automatizzare la configurazione delle notifiche per l'avviso:

  1. Clona il repository cloud-build-notifiers.

  2. Configura Google Cloud CLI con l'ID progetto e la regione:

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

    Dove:

    • project-id è l'ID del tuo progetto Google Cloud.
    • region è la regione in cui eseguire il deployment del notificatore.
  3. Esegui il seguente comando nella directory principale del repository:

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

Dove:

  • config-path è il percorso del file di configurazione delle notifiche.
  • template-path è il percorso del file modello per le notifiche. Il tuo il file modello di notifiers contiene il modello JSON integrato in Cloud Storage e rappresenta il messaggio di notifica. Puoi includere il file del modello di notifier come percorso utilizzando questa variabile o all'interno del campo uri del file di configurazione dei notifier.
  • secret-name è il nome del tuo secret archiviato in Secret Manager.

Una volta eseguito lo script, viene visualizzato il seguente messaggio:

** NOTIFIER SETUP COMPLETE **

L'avviso è stato configurato. Puoi visualizzare lo script completo nel repository cloud-build-notifiers o esegui ./setup.sh --help per le istruzioni di utilizzo associate allo script.

Passaggi successivi