Pub/Sub-Benachrichtigungen konfigurieren

Sie können Benachrichtigungen über Änderungen an Ihren Google Cloud-Repositories mit Pub/Sub erhalten. Diese Benachrichtigungen informieren Sie darüber, wenn ein Nutzer ein neues Repository erstellt, ein Repository löscht oder eine Änderung an ein vorhandenes Repository sendet. Sie können Benachrichtigungen für bestimmte Repositories oder für ein gesamtes Google Cloud-Projekt konfigurieren.

Weitere Informationen zu Pub/Sub finden Sie unter Was ist Pub/Sub?

Vorbereitung

  • Wenn Sie dies noch nicht getan haben, folgen Sie der Anleitung in der Kurzanleitung zum Hinzufügen von Benachrichtigungen, um ein Projekt zu erstellen, Git zu installieren und das Cloud SDK zu initialisieren.
  • Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Erstellen von Themen und Abos haben. Weitere Informationen finden Sie unter Zugriffssteuerung.
  • Sorgen Sie dafür, dass Sie ein Dienstkonto haben, das in Ihrem Thema veröffentlichen kann. Standardmäßig verwendet Cloud Source Repositories das Compute Engine-Standarddienstkonto zum Veröffentlichen von Nachrichten. Weitere Informationen finden Sie unter Pub/Sub-Benachrichtigungen für Cloud Source Repositories.

Pub/Sub-Thema erstellen

Für jedes Cloud Source Repositories-Projekt oder Repository, für das Sie Benachrichtigungen erhalten möchten, müssen Sie ein Pub/Sub-Thema erstellen. Sie können ein Thema mithilfe der Google Cloud Console oder des Befehlszeilentools gcloud erstellen.

Wenn Sie ein Thema erstellen, brauchen Sie einen qualifizierten URI für Ihr Repository. Der qualifizierte URI ist:

projects/[PROJECT_ID]/topics/[TOPIC_NAME]

Dabei gilt:

  • [PROJECT_ID] ist Ihre Google Cloud-Projekt-ID.
  • [TOPIC_NAME] ist der Name des Themas.

Führen Sie die folgenden Schritte aus, um ein Thema zu erstellen.

Console

  1. Wechseln Sie in der Cloud Console zur Pub/Sub-Seite Themen.

    Zur Seite "Themen"

  2. Klicken Sie auf Thema erstellen.

  3. Geben Sie einen Themennamen mit folgendem URI ein:

    projects/[PROJECT_ID]/topics/[TOPIC_NAME]
    

    Dabei gilt:

    • [PROJECT_ID] ist Ihre Google Cloud-Projekt-ID.
    • [TOPIC_NAME] ist der Name des Themas.
  4. Klicken Sie auf Erstellen.

    Die Seite Themendetails wird geöffnet.

gcloud

Führen Sie in einem Terminalfenster den folgenden Befehl aus:

gcloud pubsub topics create projects/[PROJECT_ID]/topics/[TOPIC_NAME]

Dabei gilt:

  • [PROJECT_ID] ist Ihre Google Cloud-Projekt-ID.
  • [TOPIC_NAME] ist der Name des Themas.

Weitere Informationen zum Befehl gcloud pubsub topics finden Sie in der topics-Dokumentation.

Pub/Sub-Abo erstellen

Wenn Sie Ereignisse empfangen möchten, die für ein Thema veröffentlicht werden, müssen Sie ein Pub/Sub-Abo erstellen.

Eine Aboanwendung empfängt Nachrichten von dem Thema Ihres Repositorys. Abonnenten können auf Ihre Repository-Ereignisse reagieren, indem sie Benachrichtigungen senden oder einen Build auslösen.

Führen Sie die folgenden Schritte aus, um ein Abo zu erstellen.

Console

  1. Wechseln Sie in der Cloud Console zur Pub/Sub-Seite Themen.

    Zur Seite "Themen"

  2. Klicken Sie auf den Namen des Themas Ihres Projekts.

  3. Klicken Sie auf Abo erstellen.

    Die Seite Abo zum Thema hinzufügen wird geöffnet.

  4. Geben Sie einen Namen für das Abo ein:

    projects/[PROJECT_ID]/subscriptions/[SUBSCRIPTION_NAME]
    

    Dabei gilt:

    • [PROJECT_ID] ist Ihre Google Cloud-Projekt-ID.
    • [SUBSCRIPTION_NAME] ist der Name des Pub/Sub-Abos.
  5. Belassen Sie den Zustellungstyp bei Pull.

  6. Klicken Sie auf Erstellen.

gcloud

Führen Sie in einem Terminalfenster den folgenden Befehl aus:

gcloud pubsub subscriptions create [SUBSCRIPTION_NAME] --topic=[TOPIC_NAME]

Dabei gilt:

  • [SUBSCRIPTION_NAME] ist der Name des Pub/Sub-Abos.
  • [TOPIC_NAME] ist der Name des Themas.

Weitere Informationen zum Befehl gcloud pubsub subscriptions finden Sie in der subscriptions-Dokumentation.

Thema hinzufügen

Mithilfe des gcloud-Befehlszeilentools können Sie ein Pub/Sub-Thema mit einem Google Cloud-Projekt oder Repository verknüpfen.

Geben Sie zum Verknüpfen eines Themas mit einem gesamten Projekt den folgenden Befehl ein:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

Dabei gilt:

  • [TOPIC_NAME] ist der Name des Pub/Sub-Themas.
  • [SERVICE_ACCOUNT_NAME] ist der Name Ihres Cloud Build-Dienstkontos.

Geben Sie zum Verknüpfen eines Themas mit einem bestimmten Repository den folgenden Befehl ein:

gcloud source repos update [REPOSITORY_NAME] --add-topic=[TOPIC_NAME] --service-account=[SERVICE_ACCOUNT_NAME]

Dabei gilt:

  • [REPOSITORY_NAME] ist der Name Ihres Google Cloud-Repositorys.
  • [TOPIC_NAME] ist der Name des Pub/Sub-Themas.
  • [SERVICE_ACCOUNT_NAME] ist der Name Ihres Cloud Build-Dienstkontos.

Das Dienstkonto muss sich im selben Projekt wie das Repository befinden und eine pubsub.topics.publish-Berechtigung zum Veröffentlichen einer Nachricht an das angegebene Thema haben. Sie benötigen eine iam.serviceAccounts.actAs-Berechtigung für das Dienstkonto. Wenn das Dienstkonto nicht angegeben ist, wird standardmäßig das Compute Engine-Standarddienstkonto verwendet.

Thema löschen

Mit dem Befehlszeilentool gcloud können Sie eine Verknüpfung zwischen einem Projekt oder Repository und einem Pub/Sub-Thema entfernen.

Geben Sie den folgenden Befehl ein, um ein Thema aus einem gesamten Projekt zu entfernen:

gcloud source project-configs update --remove-topic=[TOPIC_NAME]

Geben Sie den folgenden Befehl ein, um ein Thema aus einem bestimmten Repository zu entfernen:

gcloud source repos update [REPOSITORY_NAME] --remove-topic=[TOPIC_NAME]

Themenformat festlegen

Benachrichtigungen für Cloud Source Repositories können entweder das JSON- oder Protocol Buffers-Format verwenden. Um das Format für ein Thema festzulegen, können Sie beim Hinzufügen des Themas den Parameter --message-format verwenden:

gcloud source project-configs update --add-topic=[TOPIC_NAME] --message-format=[json|protobuf]

Sie können auch den Befehl set-format verwenden:

gcloud source project-configs update --update-topic=[TOPIC_NAME] --message-format=[json|protobuf]

Weitere Informationen