Webhooks einrichten

Auf dieser Seite wird beschrieben, wie Sie Webhooks in Secure Source Manager einrichten.

Webhooks sind HTTP-Anfragen, die durch ein Ereignis in Secure Source Manager ausgelöst und an eine vom Nutzer angegebene URL gesendet werden.

Hinweis

  1. Secure Source Manager-Instanz erstellen
  2. Secure Source Manager-Repository erstellen

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, damit Sie die nötigen Berechtigungen zum Erstellen von Webhooks haben:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Informationen zum Zuweisen von Secure Source Manager-Rollen finden Sie unter Zugriffssteuerung mit IAM und Nutzern Instanzzugriff gewähren.

Webhook einrichten

Console

  1. Rufen Sie in der Secure Source Manager-Weboberfläche das Repository auf, für das Sie einen Webhook erstellen möchten.
  2. Klicken Sie auf Einstellungen.
  3. Klicken Sie auf Webhooks und dann auf Webhook hinzufügen.
  4. Geben Sie im Feld Hook-ID eine ID für den Webhook ein.

  5. Geben Sie im Feld Ziel-URL die Webhook-URL ein. Wenn Sie beispielsweise einen Build in Jenkins auslösen möchten, können Sie einen Webhook-Trigger einrichten und dann die Jenkins-Trigger-URL hier eingeben, um den Build in Jenkins auszulösen.

  6. Wählen Sie im Bereich Auslösen bei eine der folgenden Optionen aus:

    • Push: Der Trigger wird ausgelöst, wenn ein Push an das Repository erfolgt.
    • Pull-Anfrage-Status geändert: Wird ausgelöst, wenn sich der Status der Pull-Anfrage ändert.
  7. Konfigurieren Sie die Webhook-Authentifizierung entweder mit einem vertraulichen Abfragestring oder mit der Dienstkonto-Authentifizierung:

    • Sensibler Abfragestring:

      Ihr vertraulicher Abfragestring besteht aus den Werten key und secret aus Ihrer Webhook-URL, einschließlich der Präfixe key= und secret=. Wenn Sie die Autorisierung für vertrauliche Abfragestrings konfigurieren möchten, müssen Sie diese Werte aus Ihrer Webhook-URL entfernen und dem Feld Vertraulicher Abfragestring hinzufügen:

      1. Löschen Sie ? aus Ihrer Webhook-URL.
      2. Kopieren Sie den verbleibenden Teil der URL, der mit key= beginnt.
      3. Fügen Sie diesen Teil in das Feld Sensitiver Abfragestring ein.
      4. Löschen Sie denselben Teil aus Ihrer Webhook-URL.

      Beispiel für eine URL: https://cloudbuild.googleapis.com/v1/projects/my-project/triggers/test-trigger:webhook?key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20

      Ihr vertraulicher Abfragestring wäre: key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=My%20Secret%20

    • Dienstkonto-Authentifizierung:

      1. Prüfen Sie, ob Ihr Repository ein Dienstkonto mit den IAM-Rollen hat, die für die Dienstkontoauthentifizierung unter Erforderliche Rollen definiert sind.
      2. Wählen Sie Dienstkontoauthentifizierung aktivieren aus.
  8. Wenn Sie Push ausgewählt haben, können Sie im Feld Branch-Filter eine Zulassungsliste für Push-Ereignisse eingeben.

    Im Feld Branch filter wird das Glob-Muster verwendet. Nur Vorgänge für die übereinstimmenden Zweige lösen einen Build-Trigger aus. Beispiel: {main,dev} wird bei Push-Ereignissen für die Zweige main und dev ausgelöst. Wenn das Feld leer oder * ist, werden Push-Ereignisse für alle Zweige gemeldet. Informationen zur Syntax finden Sie in der glob-Dokumentation.

  9. Klicken Sie auf Add webhook (Webhook hinzufügen).

  10. Der Webhook wird auf der Seite Webhooks angezeigt.

REST

Rufen Sie zum Erstellen eines Webhooks die Methode hooks.create auf, indem Sie eine POST-Anfrage an den hooks-Endpunkt senden. Sie können Ihren Webhook entweder mit einem vertraulichen Abfragestring oder mit der Dienstkonto-Authentifizierung authentifizieren.

  • Sensibler Abfragestring

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "targetUri": "https://${SERVICE_NAME}.app/webhook?key=${KEY}&secret=${SECRET}",
        "events": ["PUSH"]
        "sensitiveQueryString": "${SENSITIVE_QUERY_STRING_VALUE}"
      }' \
      "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"
    

    SENSITIVE_QUERY_STRING_VALUE sollte der Wert von key und secret in Ihrer Webhook-URL sein. Wenn Ihr key beispielsweise eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf und Ihr secret MySecret ist, sollte Ihr SENSITIVE_QUERY_STRING_VALUE key=eitIfKhYnv0LrkdsyHqIros8fbsheKRIslfsdngf&secret=MySecret sein.

  • Dienstkonto-Authentifizierung

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "targetUri": "https://${SERVICE_NAME}.app/webhook",
        "events": ["PUSH"],
        "serviceAccountAuth": true
      }' \
      "https://securesourcemanager.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/repositories/${REPOSITORY}/hooks?hook_id=${HOOK_ID}"
    

Webhook testen

  1. Klicken Sie in Secure Source Manager auf der Seite Webhooks auf den Webhook, den Sie testen möchten.
  2. Scrollen Sie zum Ende der Seite und klicken Sie auf Zustellung testen.

    Der Zustellungswarteschlange wird ein Platzhaltertermin hinzugefügt. Es kann einige Sekunden dauern, bis sie im Zustellungsverlauf angezeigt wird.

  3. Sie können auch einen git-Befehl verwenden, um eine Pull-Anfrage zu pushen oder zusammenzuführen und den Webhook zu testen.

  4. Prüfen Sie den Status des ausgelösten Builds oder Ereignisses im Build-Verlauf des Dienstes, in dem Sie den Webhook-Trigger konfiguriert haben.

  5. Nachdem Sie Ihre erste Testbereitstellung gesendet haben, können Sie sich auf der Webhook-Seite von Secure Source Manager im Bereich Letzte Bereitstellungen auch die Anfrage und Antwort für die Testbereitstellung ansehen.

Cloud Build-YAML-Variablen durch Nutzlastdaten ersetzen

Wenn Sie Webhooks verwenden, um eine Verbindung zu Cloud Build herzustellen, können Sie Cloud Build-YAML-Variablen durch Daten aus der Secure Source Manager-Webhook-Nutzlast ersetzen.

  1. Klicken Sie auf der Seite Webhooks von Secure Source Manager im Bereich Letzte Übermittlungen auf die oberste Zeile.

    Der Request-Header und der von der Webhook-Nutzlast gesendete Inhalt werden angezeigt.

  2. Rufen Sie das Cloud Build-Dashboard auf und klicken Sie auf Trigger.

  3. Klicken Sie auf den Trigger, den Sie konfigurieren möchten.

  4. Klicken Sie im Bereich „Erweitert“ unter Ersetzungsvariablen auf + Variable hinzufügen.

  5. Geben Sie den Namen und den Wert der Variablen ein. Das Wertpräfix ist body.

    Wenn Sie beispielsweise _REPO_URL durch das Nutzlastdatenfeld repository.clone_url und _COMMIT_SHA durch den SHA des letzten Commits in der Cloud Build-YAML-Datei ersetzen möchten, geben Sie die folgenden Namen und Werte ein:

    • Variable 1: _REPO_URL Wert 1: $(body.repository.clone_url)
    • Variable 2: _COMMIT_SHA Wert 2: $(body.after)

    Die Cloud Build-YAML-Datei sieht in etwa so aus:

    steps:
    - name: gcr.io/cloud-builders/git
      env:
      - '_REPO_URL=$_REPO_URL'
      - '_COMMIT_SHA=$_COMMIT_SHA'
      script: |
        #!/bin/sh
        git clone ${_REPO_URL} /workspace
        cd /workspace
        git reset --hard ${_COMMIT_SHA}
    

Nächste Schritte