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 Notifiers 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
Aktivieren Sie die Cloud Build API, Cloud Run API, Pub/Sub API und Secret Manager API, falls sie noch nicht aktiviert sind.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen
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, um sicherzustellen, dass Sie die aktuelle Version von Notifiers 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 Benachrichtigungssystems:Fügen Sie die Notifier-Funktion hinzu. Die Notifier-Schnittstelle wird durch zwei Methoden definiert:
SetUp: Die MethodeSetUpakzeptiert eine Konfiguration, ruft Secrets ab und zieht angegebene Filter aus der Konfiguration heraus. Sie speichert sie als Common Expression Language-Prädikat, das zum Senden von Benachrichtigungen verwendet werden kann. Weitere Informationen zu CEL finden Sie imcel-spec-Repository.SendNotification: Die MethodeSendNotificationwird verwendet, um Benachrichtigungen an den ausgewählten Kanal oder Dienst zu senden.Die Definition des Notifier ist in
notifier.gound in der Go-Dokumentation verfügbar.Im folgenden Beispiel wird die Notifier-Schnittstelle mit der Methode
SetUpund der MethodeSendNotificationzum Ausgeben von Build-Logs definiert.loggerist der Name Ihres Notifiers:Die endgültige Datei
main.gosollte in etwa so aussehen: In diesem Beispiel wirdloggerals Name des Benachrichtigungssystems 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 sollten.
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.
Wenn Sie
cloudbuild.yamlausführen möchten, übergeben Sie den Benachrichtigungspfad als Substitutionsvariable.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 des 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-invokerverwenden oder durch einen Namen ersetzen, der in Ihrem Google Cloud -Projekt eindeutig ist.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 des Google Cloud -Projekts.
Erstellen Sie das Thema
cloud-builds, um Build-Aktualisierungsnachrichten für Ihren Notifier zu empfangen: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=SUB_IDENTITY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
Dabei gilt:
+ SUBSCRIBER_ID ist der Name, den Sie dem Abo geben möchten.
+ SERVICE_URL ist die von Cloud Run generierte URL für den neuen Dienst.
+ PROJECT_ID ist die ID des Google Cloud -Projekts.
Note: By default, [subscriptions expire after 31 days of inactivity](/pubsub/docs/subscription-overview#lifecycle).
You can adjust or disable the expiration period by including the
[`--expiration-period` flag](/sdk/gcloud/reference/pubsub/subscriptions/create#--expiration-period)
when creating the subscription.
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.
Benachrichtigungen testen
Wenn Sie Benachrichtigungen für das in dieser Anleitung verwendete Beispiel testen möchten, 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 die 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.