Cloud Build può inviarti notifiche sugli aggiornamenti allo stato della build inviandoti notifiche ai canali desiderati. Oltre ai notifiche gestiti da Cloud Build come Slack o SMTP, puoi anche utilizzare la libreria fornita nel repository cloud-build-notifiers per creare il tuo notificatore.
In questa pagina viene spiegato come creare un sistema di notifica personalizzato.
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 in corso…
Apri una finestra del terminale sul computer.
Clona ed entra nel repository cloud-build-notifiers:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiers
Aggiungi una directory per il tuo notificante e accedi a questa directory, 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 nuova directory:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAME
Ora dovresti vedere un file
go.mod
nella tua directory.Aggiungi la seguente riga al file
go.mod
per assicurarti di utilizzare la versione più recente degli strumenti di notifica:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Ora le dipendenze sono configurate ed è tutto pronto per creare il tuo notificatore.
Creazione di un notifier personalizzato
cloud-build-notifiers
contiene una directory lib/notifiers
. Nella directory lib/notifiers
vedrai un file denominato notifier.go
. Questo file contiene il framework che puoi utilizzare per creare il tuo sistema di notifica.
Dovrai definire due metodi per creare un notificatore nel file principale.
Nella nuova directory, crea un file denominato
main.go
.In
main.go
, importa il framework della libreria delle notifiche e qualsiasi altra dipendenza:Definisci un metodo principale per l'autore delle notifiche. In questo esempio,
logger
è il nome dell'autore delle notifiche:Il metodo
main
utilizza il metodoMain
definito nel filenotifier.go
, che viene utilizzato per impostare i programmi binari delle notifiche.Definisci uno struct per il notificatore, in cui definire le variabili per l'interfaccia. In questo esempio,
logger
è il nome dell'autore delle notifiche. Ad es.
Successivamente, aggiungerai la funzionalità di notifica. L'interfaccia del notificatore è definita in due modi:
SetUp
: il metodoSetUp
accetta una configurazione, recupera i secret ed estrae i filtri specificati dalla configurazione e li archivia come predicato Common Expression Language che può essere utilizzato per inviare notifiche. Per scoprire di più sul CEL, consulta il repositorycel-spec
.SendNotification
: il metodoSendNotification
viene utilizzato per inviare notifiche al canale o servizio desiderato.La definizione del notificante è disponibile in
notifier.go
e nella documentazione di Go.Nell'esempio riportato di seguito, l'interfaccia del notificante viene definita utilizzando i metodi
SetUp
eSendNotification
per stampare i log di build, conlogger
come nome del notificante:Il file finale
main.go
dovrebbe avere un aspetto simile al seguente. In questo esempio,logger
viene utilizzato come nome dell'autore delle notifiche.Ora che hai definito l'autore delle notifiche, segui i passaggi riportati di seguito per configurarlo.
Configurazione delle notifiche
Scrivi un file di configurazione di notifica per configurare il notificatore e filtrare in base agli eventi di build:
Nel file di configurazione delle notifiche di notifica di esempio riportato di seguito, il campo
filter
utilizza CEL con la variabile disponibile,build
, per filtrare gli eventi di build con statoSUCCESS
:Dove:
logging-sample
è il nome dell'autore della notifica.
Per i campi aggiuntivi 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 delle notifiche in un bucket Cloud Storage:
Se non hai un bucket Cloud Storage, esegui questo comando per creare un bucket, dove BUCKET_NAME è il nome che vuoi assegnare al bucket, soggetto ai requisiti di denominazione.
gsutil mb gs://BUCKET_NAME/
Carica il file di configurazione delle notifiche nel bucket:
gsutil 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 notificante:
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 del notificatore, ad esempiogs://BUCKET_NAME/CONFIG_FILE_NAME.yaml
.
Per eseguire
cloudbuild.yaml
, trasmetti il percorso del notificante 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 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 di progetto Google Cloud.
Crea un account di servizio per rappresentare la tua identità di sottoscrizione 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 in cui esegui il deployment dell'immagine.PROJECT_ID
è l'ID del tuo progetto Google Cloud.
Crea l'argomento
cloud-builds
per ricevere messaggi di aggiornamento della build per il dispositivo di notifica:gcloud pubsub topics create cloud-builds
Crea un sottoscrittore push di Pub/Sub per il tuo soggetto di 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 al tuo abbonamento.service-url
è l'URL generato da Cloud Run per il tuo nuovo servizio.project-id
è l'ID del tuo progetto Google Cloud.
Le notifiche per il tuo progetto Cloud Build sono ora configurate. La prossima volta che richiami una build, riceverai una notifica nel tuo canale se la build corrisponde al filtro che hai configurato.
Test delle notifiche
Per testare la funzionalità di notifica per l'esempio utilizzato in questa guida, puoi richiamare una build eseguendo il comando gcloud builds submit
.
Nell'esempio seguente, specifichiamo success.yaml
come percorso di configurazione. L'esecuzione di questo comando dovrebbe comportare una build minima riuscita. Dovresti anche essere in grado di visualizzare 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 percorso di configurazione. L'esecuzione di questo comando dovrebbe comportare una build non riuscita. Invece di visualizzare un output dei log di build, vedrai un output che indica che non è stata trovata 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à diversa dal logging dell'output nei log di servizio di Cloud Run, puoi anche eseguire il comando gcloud builds submit
per testare la funzionalità di notifica. Per esaminare gli errori associati alla tua build, controlla i log di Cloud Run per il tuo servizio. Per saperne di più, consulta Visualizzazione dei log in Cloud Run.
Passaggi successivi
- Scopri di più sui notifiche di Cloud Build.
- Scopri come iscriverti per ricevere notifiche relative alla build.