Cloud Build puรฒ inviarti notifiche sullo stato della build inviandole ai canali selezionati. Oltre ai notifier gestiti da Cloud Build, come Slack o SMTP, puoi anche utilizzare la libreria fornita nel repository cloud-build-notifiers per creare il tuo notifier.
Questa pagina spiega come creare un notifier personalizzato.
Prima di iniziare
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Installa il linguaggio di programmazione Go.
Installa Google Cloud CLI.
Configurazione
Apri una finestra del terminale sulla tua macchina.
Clona il repository cloud-build-notifiers e vai al suo interno:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiers
Aggiungi una directory per il tuo notifier e accedi alla 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 directory.Aggiungi la seguente riga al file
go.mod
per assicurarti di utilizzare la versione piรน recente delle notifiche:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Ora le dipendenze sono configurate e puoi creare il tuo notifier.
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 notifier.
Devi definire due metodi per creare una notifica nel file principale.
Nella nuova directory, crea un file denominato
main.go
.In
main.go
, importa il framework della libreria dei notificatori e qualsiasi altra dipendenza:Definisci un metodo principale per il tuo notifier. In questo esempio,
logger
รจ il nome del notifier:Il metodo
main
utilizza il metodoMain
definito nel filenotifier.go
, che viene utilizzato per configurare i binari del notifier.Definisci una struct per il notifier, in cui definirai le variabili per l'interfaccia. In questo esempio,
logger
รจ il nome del sistema di notifica:Aggiungi la funzionalitร di notifica. L'interfaccia del notifier รจ definita da due metodi:
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รน su CEL, consulta il repositorycel-spec
.SendNotification
: il metodoSendNotification
viene utilizzato per inviare notifiche al canale o al servizio selezionato.La definizione del notifier รจ disponibile in
notifier.go
e nella documentazione di Go.Nell'esempio seguente, l'interfaccia del notifier รจ definita utilizzando il metodo
SetUp
eSendNotification
per stampare i log di build, conlogger
come nome del notifier:Il file
main.go
finale dovrebbe essere simile al seguente. In questo esempio,logger
viene utilizzato come nome del notifier.
A questo punto, configura il notificatore.
Configura le notifiche
Scrivi un file di configurazione del sistema di notifica per configurare il sistema di notifica e filtrare gli eventi di build:
Nel seguente file di configurazione del notificatore di esempio, il campo
filter
utilizza CEL con la variabile disponibilebuild
per filtrare gli eventi di build con lo statoSUCCESS
:Dove:
logging-sample
รจ il nome del notificante.
Per altri campi in base ai quali puoi filtrare, consulta la risorsa Build. Per altri esempi di filtri, vedi Utilizzo di CEL per filtrare gli eventi di build.
Carica il file di configurazione del sistema di notifica in un bucket Cloud Storage:
Se non hai un bucket Cloud Storage, esegui il comando seguente per crearne uno, dove BUCKET_NAME รจ il nome che vuoi assegnare al bucket, soggetto ai requisiti di denominazione.
gcloud storage buckets create gs://BUCKET_NAME/
Carica il file di configurazione del sistema di notifica nel 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 e distribuisci il notifier utilizzando il seguente file
cloudbuild.yaml
.Dove:
_CONFIG_PATH
รจ il percorso della configurazione del sistema di notifica, ad esempiogs://BUCKET_NAME/CONFIG_FILE_NAME.yaml
.
Per eseguire
cloudbuild.yaml
, passa il percorso del notifier come variabile di sostituzione.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAME
Concedi a Pub/Sub le autorizzazioni 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ร della 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 tuo notifier:gcloud pubsub topics create cloud-builds
Puoi anche definire un nome dell'argomento personalizzato nel file di configurazione della build in modo che i messaggi vengano inviati all'argomento personalizzato. In questo caso, devi creare un argomento con lo stesso nome dell'argomento personalizzato:
gcloud pubsub topics create topic-name
Per ulteriori informazioni, consulta la sezione Argomenti Pub/Sub per le notifiche di build.
Crea un abbonato push Pub/Sub per il tuo sistema 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.
Notifiche di test
Per testare le notifiche 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 generare 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 success.yaml
รจ:
steps:
- name: busybox
args: ["true"]
Nell'esempio seguente, specifichiamo failure.yaml
come percorso di configurazione. L'esecuzione di questo comando dovrebbe comportare un errore di build. Anzichรฉ
visualizzare un output dei log di build, vedrai un output che ti informa
che non รจ stata trovata alcuna corrispondenza per i filtri CEL specificati nell'origine.
gcloud builds submit --no-source --config=failure.yaml
Dove failure.yaml
รจ:
steps:
- name: busybox
args: ["false"]
Se hai creato un notifier configurato per eseguire un'altra attivitร
diversa dalla registrazione dell'output nei log del servizio Cloud Run, puoi anche eseguire il comando gcloud builds submit
per testare le notifiche.
Per esaminare gli errori associati alla build, controlla i log di Cloud Run per il tuo servizio. Per saperne di piรน, consulta la sezione
Visualizzazione dei log in Cloud Run.
Passaggi successivi
- Scopri di piรน sui notifier di Cloud Build.
- Scopri come iscriverti alle notifiche di build.