Cloud Build può inviarti notifiche sugli aggiornamenti dello stato della build tramite inviandoti notifiche ai canali desiderati. Oltre a notifier gestiti da Cloud Build come Slack o SMTP puoi anche utilizzare la libreria fornita cloud-build-notifiers per creare un avviso personalizzato.
In questa pagina viene spiegato come creare notifiche personalizzate.
Prima di iniziare
-
Abilita le API Cloud Build, Cloud Run, Pub/Sub, and Secret Manager.
Installa il linguaggio di programmazione Go.
Installa Google Cloud CLI.
Configurazione
Apri una finestra del terminale sul computer.
Clona e vai al repository cloud-build-notifiers:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiers
Aggiungi una directory per il tuo notifier e aprila, dove DIRECTORY_NAME è il nome della directory:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAME
Inizializza i moduli go nella nuova directory, dove DIRECTORY_NAME è il nome della tua nuova directory:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAME
A questo punto dovresti vedere un file
go.mod
nella directory.Aggiungi la seguente riga al file
go.mod
per assicurarti di utilizzare il l'ultima versione delle notifiche:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Le dipendenze sono ora configurate e puoi creare un avviso personalizzato.
Creazione di un notifier personalizzato
cloud-build-notifiers
contiene una directory lib/notifiers
. Nella
Directory lib/notifiers
, vedrai un file denominato notifier.go
. Questo
contiene il framework che puoi usare per creare un avviso personalizzato.
Dovrai definire due metodi per creare un avviso nel file principale.
Nella nuova directory, crea un file denominato
main.go
.In
main.go
, importa il framework della libreria di notifiche e qualsiasi altra dipendenza:Definisci un metodo principale per il notificatore. In questo esempio,
logger
è il nome dell'autore della notifica:Il metodo
main
usa il metodoMain
definita nel filenotifier.go
, utilizzato per impostare i file binari delle notifiche.Definisci uno struct per il notificatore, in cui definirai le variabili per l'interfaccia. In questo esempio,
logger
è il nome dell'autore della notifica. Ad es.
Successivamente, aggiungerai la funzionalità di notifica. L'interfaccia di notifica viene definita con due metodi:
SetUp
: il metodoSetUp
accetta una configurazione, recupera i secret, estrae i filtri specificati dalla configurazione e li archivia come Predicato Expression Language che può essere utilizzato per inviare notifiche. A Scopri di più su CEL, consulta il repositorycel-spec
.SendNotification
: il metodoSendNotification
è quello che viene utilizzato Inviare notifiche al canale o al servizio desiderato.La definizione dell'autore della notifica è disponibile in
notifier.go
e nella documentazione di Go.Nell'esempio riportato di seguito, l'interfaccia di notifica viene definita utilizzando
SetUp
e il metodoSendNotification
per stampare i log di build, conlogger
come nome dell'autore della notifica:Il file finale (
main.go
) dovrebbe essere simile al seguente file. In questo Ad esempio,logger
è utilizzato come nome dell'autore della notifica.Ora che hai definito il generatore di notifiche, puoi seguire le istruzioni riportate di seguito i passaggi seguenti per configurare l'avviso.
Configurazione delle notifiche
Scrivi un file di configurazione dell'autore delle notifiche per configurare quest'ultimo e applicare un filtro creare eventi:
Nel file di configurazione dell'autore della notifica di esempio riportato di seguito, il campo
filter
utilizza CEL con la variabile disponibilebuild
per filtrare gli eventi di build con statoSUCCESS
:Dove:
logging-sample
è il nome dell'autore della notifica.
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.
Carica il file di configurazione del generatore di notifiche in un bucket Cloud Storage:
Se non hai un bucket Cloud Storage, esegui questo comando creare un bucket, dove BUCKET_NAME è il nome da assegnare al bucket, in base ai requisiti di denominazione.
gcloud storage buckets create gs://BUCKET_NAME/
Carica il file di configurazione dell'autore della notifica nel tuo bucket:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAME
Dove:
BUCKET_NAME
è il nome del tuo bucket.CONFIG_FILE_NAME
è il nome del file di configurazione.
Crea ed esegui il deployment del notifier:
Crea un Dockerfile per
logging-sample
:Crea ed esegui il deployment del notificatore utilizzando il seguente file
cloudbuild.yaml
.Dove:
_CONFIG_PATH
è il percorso della configurazione dell'autore della notifica, ad esempiogs://BUCKET_NAME/CONFIG_FILE_NAME.yaml
.
Per eseguire
cloudbuild.yaml
, inserisci il percorso della notifica come variabile di sostituzione.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAME
Concedi le autorizzazioni Pub/Sub per creare token di autenticazione nel tuo progetto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Dove:
PROJECT_ID
è l'ID del tuo progetto Google Cloud.PROJECT_NUMBER
è il numero del tuo progetto Google Cloud.
Crea un account di servizio per rappresentare l'identità dell'abbonamento Pub/Sub:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"
Puoi utilizzare
cloud-run-pubsub-invoker
o un nome univoco all'interno del tuo progetto Google Cloud.Concedi all'account di servizio
cloud-run-pubsub-invoker
l'autorizzazioneInvoker
di Cloud Run:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Dove:
SERVICE_NAME
è il nome del servizio Cloud Run a cui stai eseguendo il deployment dell'immagine.PROJECT_ID
è l'ID del tuo progetto Google Cloud.
Crea l'argomento
cloud-builds
per ricevere i messaggi di aggiornamento della build per l'autore della notifica:gcloud pubsub topics create cloud-builds
Crea un sottoscrittore push di Pub/Sub per l'autore della notifica:
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.com
Dove:
subscriber-id
è il nome che vuoi assegnare all'abbonamento.service-url
è l'URL generato da Cloud Run per il nuovo servizio.project-id
è l'ID del tuo progetto Google Cloud.
Le notifiche per il tuo progetto Cloud Build sono ora configurate. Il prossimo volta che richiami una build, riceverai una notifica sul tuo canale se corrisponde al filtro configurato.
Notifiche di test
Per testare la funzionalità di notifica per l'esempio utilizzato in questa guida, puoi
per richiamare una build eseguendo il comando gcloud builds submit
.
Nell'esempio seguente, specifichiamo success.yaml
come configurazione
del tuo percorso di apprendimento. L'esecuzione di questo comando dovrebbe comportare una build riuscita minima. Tu
dovrebbe anche essere in grado di vedere un output dei log di build.
gcloud builds submit --no-source --config=success.yaml
Dove si trova success.yaml
:
steps:
- name: busybox
args: ["true"]
Nell'esempio seguente, specifichiamo failure.yaml
come configurazione
del tuo percorso di apprendimento. L'esecuzione di questo comando dovrebbe causare un errore nella build. Invece di
un output dei log di build, vedrai un output che informa
che non esisteva una corrispondenza per i filtri CEL specificati nell'origine.
gcloud builds submit --no-source --config=failure.yaml
Dove si trova failure.yaml
:
steps:
- name: busybox
args: ["false"]
Se hai creato un notificatore configurato per eseguire un'altra attività
oltre al logging dell'output nei log di servizio Cloud Run,
puoi anche eseguire il comando gcloud builds submit
per testare le notifiche
funzionalità. Per esaminare gli errori associati alla build, controlla
i log di Cloud Run per il tuo servizio. Per saperne di più, vedi
Visualizzazione dei log in Cloud Run.
Passaggi successivi
- Scopri di più sugli avvisi di Cloud Build.
- Scopri come iscriverti per ricevere notifiche sulle build.