Cloud Build kann Sie über Aktualisierungen bezüglich Ihres Build-Status informieren, indem Benachrichtigungen an ausgewählte Kanäle gesendet werden. Neben den von Cloud Build verwalteten Notifiern wie Slack oder SMTP können Sie auch die bereitgestellte Bibliothek im Repository cloud-build-notifiers verwenden, um einen eigenen Notifier zu erstellen.
Auf dieser Seite wird erläutert, wie Sie einen eigenen Notifier erstellen.
Hinweis
-
Enable the Cloud Build, Cloud Run, Pub/Sub, and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Installieren Sie die Go-Programmiersprache.
Installieren Sie die Google Cloud CLI.
Einrichten
Öffnen Sie ein Terminalfenster auf Ihrem Computer.
Klonen Sie das Repository cloud-build-notifiers und gehen Sie zu diesem Repository:
git clone https://github.com/GoogleCloudPlatform/cloud-build-notifiers.git && cd cloud-build-notifiersFügen Sie ein Verzeichnis für Ihren eigenen Notifier hinzu und rufen Sie dieses auf, wobei DIRECTORY_NAME der Name des Verzeichnisses ist:
mkdir DIRECTORY_NAME && cd DIRECTORY_NAMEInitialisieren Sie Go-Module in Ihrem neuen Verzeichnis, wobei DIRECTORY_NAME der Name des neuen Verzeichnisses ist:
go mod init github.com/GoogleCloudPlatform/cloud-build-notifiers/DIRECTORY_NAMENun sollte eine
go.mod-Datei in Ihrem Verzeichnis angezeigt werden.Fügen Sie der Datei
go.moddie folgende Zeile hinzu, damit Sie immer die neueste Version der Notifier verwenden:replace github.com/GoogleCloudPlatform/cloud-build-notifiers/lib/notifiers => ../
Ihre Abhängigkeiten sind jetzt eingerichtet und Sie können einen eigenen Notifier erstellen.
Eigenen Notifier erstellen
cloud-build-notifiers enthält ein lib/notifiers-Verzeichnis. Im Verzeichnis lib/notifiers wird eine Datei namens notifier.go angezeigt. Diese Datei enthält das Framework, mit dem Sie einen eigenen Notifier erstellen können.
Sie müssen zwei Methoden definieren, um in der Hauptdatei einen Notifier zu erstellen.
Erstellen Sie im neuen Verzeichnis eine Datei mit dem Namen
main.go.Importieren Sie in
main.godas Notifier-Bibliotheks-Framework und alle anderen Abhängigkeiten:Definieren Sie eine Hauptmethode für den Notifier. In diesem Beispiel ist
loggerder Name des Notifiers:Die
main-Methode verwendet die in der Dateinotifier.godefinierteMain-Methode, um Notifier-Binärdateien einzurichten.Definieren Sie eine Struktur für den Notifier, wo Sie die Variablen für Ihre Schnittstelle definieren. In diesem Beispiel ist
loggerder Name des Notifiers:Fügen Sie die Benachrichtigungsfunktion hinzu. Die Notifier-Schnittstelle wird durch zwei Methoden definiert:
SetUp: Die MethodeSetUpakzeptiert eine Konfiguration, ruft Secrets ab und ruft bestimmte Filter aus der Konfiguration ab. Außerdem wird sie als Prädikat der Common Expression Language gespeichert, das zum Senden von Benachrichtigungen verwendet werden kann. Weitere Informationen zu CEL finden Sie im Repositorycel-spec.SendNotification: Mit derSendNotification-Methode werden Benachrichtigungen an den ausgewählten Kanal oder Dienst gesendet.Die Definition des Notifiers ist in
notifier.gound in der Go-Dokumentation verfügbar.Im folgenden Beispiel wird die Notifier-Schnittstelle mit den Methoden
SetUpundSendNotificationdefiniert, um Build-Logs auszugeben, wobeiloggerder Name des Notifiers ist:Die endgültige Datei
main.gosollte in etwa so aussehen: In diesem Beispiel wirdloggerals Name des Notifiers verwendet.
Konfigurieren Sie als Nächstes Ihren Notifier.
Benachrichtigungen konfigurieren
Schreiben Sie eine Notifier-Konfigurationsdatei, um Ihren Notifier zu konfigurieren und nach Build-Ereignissen zu filtern:
In der folgenden Beispiel-Notifier-Konfigurationsdatei wird im Feld
filterCEL mit der verfügbaren Variablebuildverwendet, um Build-Ereignisse mit dem StatusSUCCESSzu filtern:Wobei:
logging-sampleist der Name des Notifiers.
Weitere Felder, nach denen Sie filtern können, finden Sie in der Ressource Build. Weitere Filterbeispiele finden Sie unter CEL zum Filtern von Build-Ereignissen verwenden.
Laden Sie die Notifier-Konfigurationsdatei in einen Cloud Storage-Bucket hoch:
Wenn Sie keinen Cloud Storage-Bucket haben, führen Sie den folgenden Befehl aus, um einen Bucket zu erstellen. Dabei ist BUCKET_NAME der Name, den Sie Ihrem Bucket gemäß den Vorgaben für die Benennung geben möchten.
gcloud storage buckets create gs://BUCKET_NAME/Laden Sie die Konfigurationsdatei für den Notifier in Ihren Bucket hoch:
gcloud storage cp CONFIG_FILE_NAME gs://BUCKET_NAME/CONFIG_FILE_NAMEHierbei gilt:
BUCKET_NAMEist der Name des Buckets.CONFIG_FILE_NAMEist der Name Ihrer Konfigurationsdatei.
Erstellen Sie den Notifier und stellen Sie ihn bereit:
Erstellen Sie ein Dockerfile für
logging-sample:Erstellen Sie den Notifier mit der folgenden
cloudbuild.yaml-Datei und stellen Sie ihn bereit.Wobei:
_CONFIG_PATHist der Pfad zu Ihrer Notifier-Konfiguration, z. B.gs://BUCKET_NAME/CONFIG_FILE_NAME.yaml.
Übergeben Sie den Notifier-Pfad als Substitutionsvariable, um
cloudbuild.yamlauszuführen.gcloud builds submit . --substitutions=_CONFIG_PATH=gs://BUCKET_NAME/CONFIG_FILE_NAMEGewähren Sie Pub/Sub-Berechtigungen zum Erstellen von Authentifizierungstokens in Ihrem Projekt:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreatorWobei:
PROJECT_IDist die ID Ihres Google Cloud Projekts.PROJECT_NUMBERist Ihre Google Cloud Projektnummer.
Erstellen Sie ein Dienstkonto, das die Pub/Sub-Abonnementidentität darstellen soll:
gcloud iam service-accounts create cloud-run-pubsub-invoker \ --display-name "Cloud Run Pub/Sub Invoker"Sie können
cloud-run-pubsub-invokeroder einen innerhalb Ihres Google Cloud -Projekts eindeutigen Namen verwenden.Weisen Sie dem Dienstkonto
cloud-run-pubsub-invokerdie Cloud Run-BerechtigungInvokerzu:gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:cloud-run-pubsub-invoker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invokerHierbei gilt:
SERVICE_NAMEist der Name des Cloud Run-Dienstes, in dem Sie das Image bereitstellen.PROJECT_IDist die ID Ihres Google Cloud Projekts.
Erstellen Sie das Thema
cloud-builds, um Build-Update-Nachrichten für Ihren Notifier zu erhalten:gcloud pubsub topics create cloud-buildsSie können auch einen benutzerdefinierten Themennamen in Ihrer Build-Konfigurationsdatei definieren, damit Nachrichten stattdessen an das benutzerdefinierte Thema gesendet werden. In diesem Fall würden Sie ein Thema mit demselben benutzerdefinierten Namen erstellen:
gcloud pubsub topics create topic-nameWeitere Informationen finden Sie unter Pub/Sub-Themen für Build-Benachrichtigungen.
Erstellen Sie einen Pub/Sub-Push-Abonnenten für Ihren Notifier:
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.comHierbei gilt:
subscriber-idist der Name, den Sie Ihrem Abo geben möchten.service-urlist die von Cloud Run generierte URL für Ihren neuen Dienst.project-idist die ID Ihres Google Cloud Projekts.
Benachrichtigungen sind nun für Ihr Cloud Build-Projekt eingerichtet. Wenn Sie das nächste Mal einen Build aufrufen, erhalten Sie eine Benachrichtigung in Ihrem Kanal, wenn der Build dem von Ihnen konfigurierten Filter entspricht.
Testbenachrichtigungen
Zum Testen von Benachrichtigungen für das in dieser Anleitung verwendete Beispiel können Sie einen Build mit dem Befehl gcloud builds submit aufrufen.
Im folgenden Beispiel geben wir success.yaml als Konfigurationspfad an. Die Ausführung dieses Befehls sollte zu einem minimalen erfolgreichen Build führen. Sie sollten auch eine Ausgabe Ihrer Build-Logs sehen können.
gcloud builds submit --no-source --config=success.yaml
Wo success.yaml Folgendes ist:
steps:
- name: busybox
args: ["true"]
Im folgenden Beispiel geben wir failure.yaml als Konfigurationspfad an. Die Ausführung dieses Befehls sollte zu einem fehlgeschlagenen Build führen. Anstelle einer Ausgabe Ihrer Build-Logs werden Sie darüber informiert, dass für die von Ihnen in der Quelle angegebenen CEL-Filter keine Übereinstimmung vorliegt.
gcloud builds submit --no-source --config=failure.yaml
Wo failure.yaml Folgendes ist:
steps:
- name: busybox
args: ["false"]
Wenn Sie einen Notifier erstellt haben, der für eine andere Aufgabe als das Logging der Ausgabe in Cloud Run-Dienstlogs konfiguriert ist, können Sie auch den Befehl gcloud builds submit ausführen, um Ihre Benachrichtigungen zu testen.
Prüfen Sie die Cloud Run-Logs für Ihren Dienst, um die mit Ihrem Build verbundenen Fehler zu untersuchen. Weitere Informationen finden Sie unter Logs in Cloud Run ansehen.