Aktivieren von Ereignisbenachrichtigungen für Toolchains

Continuous Delivery wird am 12. Februar 2027 in den folgenden Regionen eingestellt: au-syd, ca-tor, us-east. Code Risk Analyzer wird zu diesem Zeitpunkt ebenfalls in allen Regionen eingestellt. Wenn diese Funktionen in einer Region nicht aktiv genutzt werden, können sie in dieser Region vorzeitig eingestellt werden, sodass keine neuen Instanzen mehr akzeptiert werden. Weitere Informationen

Als Administrator von IBM Cloud® Continuous Delivery Toolchains möchten Sie möglicherweise Benachrichtigungen über Ereignisse in einer Toolchain oder einer Tool-Integration an andere Benutzer oder menschliche Empfänger senden, indem Sie E-Mail, SMS, Slack oder andere unterstützte PagerDuty, Übermittlungskanäle verwenden. Außerdem möchten Sie diese Ereignisbenachrichtigungen möglicherweise an andere Anwendungen senden, um mithilfe von ereignisgesteuerter Programmierung – beispielsweise über Webhooks – Logik zu erstellen. Dieser Ansatz wird durch die Integration von Toolchains und IBM Cloud® Event Notifications ermöglicht.

Zum Senden von Informationen an Event Notificationsmüssen Sie eine Event Notifications-Toolintegration hinzufügen. Weitere Informationen zum Arbeiten mit Event Notificationsfinden Sie unter Einführung in Event Notifications.

Sie können nun Ereignisbenachrichtigungen mit Hilfe der Event Notifications tool-Integration. Event Notifications ist die bevorzugte Methode zur Verteilung von Benachrichtigungen an Slack und andere Kommunikationskanäle wie PagerDuty, E-Mail, SMS, Push-Benachrichtigungen, Webhook, Microsoft® Teams, ServiceNow, und IBM Cloud Functions.

Wie Ereignisse von Toolchains erfasst und gesendet werden

Wenn ein Ereignis von Interesse in einer Toolchain oder einer der unterstützten Toolintegrationen auftritt, kommuniziert die Toolchain mit einer verbundenen Event Notifications-Instanz, um eine Benachrichtigung an ein unterstütztes Ziel weiterzuleiten.

Toolchains unterstützen zwei Arten von Ereignissen:

  • Integrierte Ereignisse werden automatisch innerhalb einer Toolchain generiert. Beispielsweise werden integrierte Ereignisse gesendet, wenn Toolintegrationen zu einer Toolchain hinzugefügt oder daraus entfernt werden, wenn Pipelineausführungen gestartet werden und wenn Pipelineausführungen beendet werden. Die Nutzdaten eines integrierten Ereignisses bestehen aus Daten, die von der Toolchain bestimmt werden.
  • Kundenspezifische Ereignisse werden von einer Toolchain auf Anforderung eines Clients mithilfe der POST /toolchains/{toolchain_id}/events-API generiert. Die Nutzdaten eines maßgeschneiderten Clientereignisses bestehen aus Daten, die von der Toolchain bestimmt werden, und Daten, die der API vom Client bereitgestellt werden.

Tekton-Pipeline-Schritte können die kundenspezifische POST {toolchain_id} /toolchains//events-API nutzen, um benutzerdefinierte Ereignisse an Event Notifications Ziele zu senden, die für die Schritte relevante und aussagekräftige Informationen enthalten.

Ereignisse für Continuous Delivery

In der folgenden Tabelle sind die Toolchain-Ereignisse aufgeführt.

Die :1-Zeichen, die an jeden Subtyp angehängt werden, stellen Hauptversionsnummern dar.

Aktionen, die Ereignisbenachrichtigungen erzeugen
Ereignisname Ereignistyp Untertyp Beschreibung
Client event com.ibm.cloud.toolchain.client event:1 Dieses maßgeschneiderte Clientereignis wird gesendet, wenn ein Client die POST /toolchains/{toolchain_id}/events-API aufruft.
Tool created com.ibm.cloud.toolchain.toolchain toolchain_bind:1 Dieses integrierte Ereignis wird gesendet, wenn eine Toolintegration erstellt und einer Toolchain hinzugefügt wird.
Tool deleted com.ibm.cloud.toolchain.toolchain toolchain_unbind:1 Dieses integrierte Ereignis wird gesendet, wenn eine Toolintegration gelöscht und aus einer Toolchain entfernt wird.
Pipeline run started com.ibm.cloud.toolchain.pipeline pipeline_start:1 Dieses integrierte Ereignis wird gesendet, wenn entweder eine Tekton-Pipeline-Ausführung oder eine Classic-Pipeline-Stage gestartet wird.
Pipeline run succeeded com.ibm.cloud.toolchain.pipeline pipeline_success:1 Dieses integrierte Ereignis wird gesendet, wenn entweder eine Tekton-Pipeline-Ausführung oder eine Classic-Pipeline-Stage erfolgreich abgeschlossen wird.
Pipeline run failed com.ibm.cloud.toolchain.pipeline pipeline_fail:1 Dieses integrierte Ereignis wird gesendet, wenn entweder eine Tekton-Pipeline-Ausführung oder eine Classic-Pipeline-Stage mit einem Fehlerstatus abgeschlossen wird. Dieses Ereignis wird beispielsweise gesendet, wenn eine Implementierung versucht wird, aber nicht erfolgreich abgeschlossen werden kann.
Pipeline run cancelled com.ibm.cloud.toolchain.pipeline pipeline_cancel:1 Dieses integrierte Ereignis wird gesendet, wenn entweder eine Tekton-Pipeline-Ausführung oder eine Classic-Pipeline-Stage abgebrochen wird.
Pipeline run error com.ibm.cloud.toolchain.pipeline pipeline_error:1 Dieses integrierte Ereignis wird gesendet, wenn bei einer Tekton-Pipeline-Ausführung ein Fehler auftritt, der wahrscheinlich nicht erfolgreich abgeschlossen wurde. Dieses Ereignis wird in erster Linie für Infrastruktur-und Konfigurationsprobleme verwendet, z. B. wenn ein fehlerhaftes Tekton den Start der Pipelineausführung verhindert.

Benachrichtigungen aktivieren

Integrierte und maßgeschneiderte Clientereignisse, die von einer Toolchain oder einer zugehörigen Toolintegration generiert wurden, können an eine Event Notifications-Serviceinstanz weitergeleitet werden, die in demselben Konto verfügbar ist.

Stellen Sie sicher, dass die ausgewählte Event Notifications Service-Instanz über eine IAM-Autorisierungsrichtlinie verfügt, die es der Toolchain ermöglicht, Ereignisse an diese Service-Instanz zu senden. Weitere Informationen zum Erteilen der Berechtigung für die Event Notifications Service-Instanz finden Sie unter Warum wird mir die Berechtigung zur Integration einer Event Notifications Instanz verweigert?

Verbindung zu Event Notifications in der Konsole herstellen

Konfigurieren Sie Event Notifications, um kritische Ereignisse von Toolchains und Toolintegrationsinstanzen zu senden:

  1. Wenn Sie über eine Toolchain verfügen und diese Tool-Integration hinzufügen möchten, klicken Sie in der IBM Cloud-Konsole auf das Menü-Symbol ( Hamburger-Symbol ) > Platform Automation > Toolchains. Klicken Sie auf der Seite 'Toolchains' auf die Toolchain, um die zugehörige Übersichtsseite zu öffnen.

    a. Klicken Sie auf Tool hinzufügen.

    b. Klicken Sie im Abschnitt mit den Toolintegrationen auf Event Notifications.

  2. Geben Sie den Namen ein, den Sie für diese Tool-Integration auf der Event Notifications-Karte in Ihrer Toolchain anzeigen möchten. Dieser Name wird verwendet, um die Werkzeugintegration in Ihrer Toolchain zu identifizieren.

  3. Wählen Sie die Instanz Event Notifications aus, mit der die Toolchain verbunden werden soll.

  4. Klicken Sie auf Integration erstellen, um die Event Notifications-Tool-Integration zu Ihrer Toolchain hinzuzufügen.

  5. Klicken Sie auf der Übersichtsseite Ihrer Toolchain auf der Karte IBM Cloud auf Event Notifications.

Verbindung zu Event Notifications über die API herstellen

Sie können die Event Notifications-Toolintegration mithilfe der API zu Ihrer Toolchain hinzufügen.

  1. Rufen Sie ein IAM-Trägertoken ab.. Wenn Sie ein SDK verwenden, rufen Sie einen IAM-API-Schlüssel ab und legen Sie die Clientoptionen mithilfe von Umgebungsvariablen fest.

    export CD_TOOLCHAIN_AUTH_TYPE=iam && \
    export CD_TOOLCHAIN_APIKEY={iam_api_key} && \
    export CD_TOOLCHAIN_URL={base_url}
    
  2. Suchen Sie nach der ID der Toolchain, in der Sie Ihre Toolintegration erstellen wollen.

  3. Geben Sie eventnotifications als tool_type_id an.

  4. Geben Sie die folgenden tool_parameters an, die für die Toolintegration erforderlich sind:

    • name: Der Name, mit dem die Event Notifications-Toolintegration identifiziert wird.
    • instance-crn: Der Cloudressourcenname (CRN) der Event Notifications-Serviceinstanz.
  5. Fügen Sie die Tool-Integration in die jeweilige Toolchain hinzu.

    curl -X POST --location --header "Authorization: Bearer {iam_token}" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      --data '{ "name": "{tool_name}", "tool_type_id": "eventnotifications", "parameters": { "name": {event_notifications_tool_integration_name}, "instance-crn": {event_notifications_service_crn} } }' \
      "{base_url}/toolchains/{toolchain_id}/tools"
    
    const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');
    const toolchainService = CdToolchainV2.newInstance();
    ...
    (async() => {
       const toolParameters = {
          "name": {event_notifications_tool_integration_name},
          "instance-crn": {event_notifications_service_crn}
       }
       const toolPrototypeModel = {
          toolchainId: {toolchain_id},
          toolTypeId: "eventnotifications",
          name: {tool_name},
          parameters: toolParameters
       };
       const response = await toolchainService.createTool(toolPrototypeModel);
    })();
    
    import (
    	   "github.com/IBM/continuous-delivery-go-sdk/cdtoolchainv2"
    )
    ...
    toolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{}
    toolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions)
    toolParameters := map[string]interface{}{
       "name": {event_notifications_tool_integration_name},
       "instance-crn": {event_notifications_service_crn},
    }
    createToolOptions := toolchainClient.NewCreateToolOptions({toolchain_id}, "eventnotifications")
    createToolOptions.SetName({tool_name})
    createToolOptions.SetParameters(toolParameters)
    tool, response, err := toolchainClient.CreateTool(createToolOptions)
    
    from ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2
    ...
    toolchain_service = CdToolchainV2.new_instance()
    tool_parameters = {}
    tool_parameters["name"] = {event_notifications_tool_integration_name}
    tool_parameters["instance-crn"] = {event_notifications_service_crn}
    tool = toolchain_service.create_tool(
       name = {tool_name},
       toolchain_id = {toolchain_id},
       tool_type_id = "eventnotifications",
       parameters = tool_parameters
    )
    
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.CdToolchain;
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.model.*;
    ...
    CdToolchain toolchainService = CdToolchain.newInstance();
    HashMap<String, Object> toolParameters = new HashMap<>();
    toolParameters.put("name", {event_notifications_tool_integration_name});
    toolParameters.put("instance-crn", {event_notifications_service_crn});
    CreateToolOptions createToolOptions = new CreateToolOptions.Builder()
       .name({tool_name})
       .parameters(toolParameters)
       .toolchainId({toolchain_id})
       .toolTypeId("eventnotifications")
       .build();
    Response<ToolchainToolPost> response = toolchainService.createTool(createToolOptions).execute();
    ToolchainToolPost tool = response.getResult();
    

In der folgenden Tabelle werden alle Variablen aufgelistet und beschrieben, die in den vorherigen Schritten verwendet wurden.

Variablen für die Bereitstellung der Werkzeugintegration mit der API
Variable Beschreibung
{base_url} Der Endpunkt der URL Toolchain-API. Weitere Informationen zu den unterstützten Werten finden Sie unter Endpunkt URL.
{iam_api_key} Ihr IAM-API-Schlüssel.
{iam_token} Ein gültiges IAM-Bearer-Token.
{tool_name} Der Name der Toolintegration.
{event_notifications_tool_integration_name} Der Name der Instanz des Dienstes Event Notifications.
{event_notifications_service_crn} Der Cloud Resource Name (CRN) der Instanz des Dienstes Event Notifications.
{toolchain_id} Die Toolchain, in der die Toolintegration erstellt werden soll

Toolintegration mit Terraform hinzufügen

Sie können die Event Notifications-Toolintegration mithilfe von Terraform zu Ihrer Toolchain hinzufügen.

IBM Cloud Terraform Provider Version 1.53.0 oder höher ist erforderlich, um eine Tool-Integration mit Terraform hinzuzufügen.

  1. Um die Terraform-Befehlszeilenschnittstelle (CLI) zu installieren und das IBM Cloud-Anbieter-Plugin für Terraform zu konfigurieren, befolgen Sie die Anleitung Erste Schritte mit Terraform unter IBM Cloud®.

  2. Erstellen Sie eine Terraform-Konfigurationsdatei mit dem Namen main.tf. Fügen Sie in dieser Datei die Konfiguration hinzu, um Ressourceninstanzen mithilfe der HashiCorp Configuration Language (HCL) zu erstellen. Weitere Informationen zur Verwendung dieser Konfigurationssprache finden Sie in der Terraform-Dokumentation.

    Im folgenden Beispiel wird eine Delivery Pipeline mithilfe der Ressource ibm_cd_toolchain_tool_pipeline erstellt, wobei toolchain_id eine GUID ist, die die Toolchain darstellt, in der die Toolintegration erstellt werden soll.

    data "ibm_cd_toolchain" "cd_toolchain" {
      toolchain_id = {toolchain_id}
    }
    resource "ibm_cd_toolchain_tool_eventnotifications" "en_instance" {
      toolchain_id = data.ibm_cd_toolchain.cd_toolchain.id
      parameters {
        name = "{event_notifications_tool_integration_name}"
        instance_crn = "{event_notifications_service_crn}"
      }
    }
    

    Weitere Informationen zu Toolintegrationsressourcen finden Sie in der vollständigen Liste der unterstützten Toolintegrationsressourcen in der IBM Cloud Terraform-Registry.

  3. Terraform-Befehlszeilenschnittstelle initialisieren.

    terraform init
    
  4. Erstellen Sie einen Terraform-Ausführungsplan. Dieser Plan fasst die Aktionen zusammen, die ausgeführt werden müssen, um die Toolintegration zu erstellen.

    terraform plan
    
  5. Wenden Sie den Terraform-Ausführungsplan an. Terraform führt die erforderlichen Aktionen zum Erstellen der Toolintegration aus.

    terraform apply
    

In der folgenden Tabelle werden alle Variablen aufgelistet und beschrieben, die in den vorherigen Schritten verwendet wurden.

Variablen für die Bereitstellung der Werkzeugintegration mit der API
Variable Beschreibung
{event_notifications_tool_integration_name} Der Name der Instanz des Dienstes Event Notifications.
{event_notifications_service_crn} Der CRN der Event Notifications-Serviceinstanz
{toolchain_id} Die Toolchain, in der die Toolintegration erstellt werden soll

Benachrichtigungen an ausgewählte Ziele zustellen

Nachdem Sie Ereignisbenachrichtigungen für eine Toolchain aktiviert haben, erstellen Sie Themen, Ziele und Subskriptionen in Event Notifications, damit Alerts weitergeleitet und an Ihre ausgewählten Ziele zugestellt werden.

Eine vollständige Liste der unterstützten Ziele finden Sie in der Event Notifications-Dokumentation.

Details der Benachrichtigungsnutzdaten

Ereignisse, die von Toolchains und den zugehörigen Toolintegrationsinstanzen generiert werden, enthalten verschiedene Felder, mit deren Hilfe Sie die Quelle und Details eines Ereignisses ermitteln können.

Die POST {toolchain_id} /toolchains//events API gibt einen Statuscode 200 zurück, um anzuzeigen, dass die Anfrage verarbeitet wurde. Dies bedeutet nicht unbedingt, dass die Ereignisse erfolgreich an die entsprechenden Event Notifications Service-Instanzen gesendet wurden.

Integrierte Ereignisbenachrichtigungen von Toolchains und Toolintegrationsinstanzen enthalten nur Metadateneigenschaften wie Namen oder IDs von Ressourcen. Sensible Daten wie API-Schlüssel oder Passwörter sind in den generierten Ereignissen nicht enthalten.

Kundenspezifische Ereignisbenachrichtigungen enthalten die Daten, die der Kunde an die POST {toolchain_id} /toolchains//events API übermittelt hat. Schließen Sie keine Berechtigungsnachweise, persönlichen Identifikationsinformationen oder andere sensible Informationen in Aufrufe an die API ein.

Die an Event Notifications gesendeten Eigenschaften variieren je nach Ereignistyp. Wenn beispielsweise ein Ereignis com.ibm.cloud.toolchain.pipeline:pipeline_start:1 auftritt, sendet die Toolchain Benachrichtigungsnutzdaten an Event Notifications, die dem folgenden Beispiel ähneln.

{
   "subject": {
      "name": "<user>",
      "email": "<user_email>",
      "iam_id": "<iam_id>"
   },
   "toolchain.instance": {
      "crn": "crn:v1:bluemix:public:toolchain:<region>:a/<account_id>:<toolchain_id>::",
      "href": "https://api.<region>.devops.cloud.ibm.com/toolchain/v2/toolchains/<toolchain_id>",
      "id": "357d4432-964a-46ae-83d4-df91eb539d1a",
      "name": "EventNotifications-toolchain",
      "resource_group_id": "<resource_group_id>",
      "ui_href": "https://cloud.ibm.com/devops/toolchains/<toolchain_id>?env_id=ibm:yp:us-south"
   },
   "toolchain.tool-instance": {
      "href": "https://api.<region>.devops.cloud.ibm.com/toolchain/v2/toolchains/<toolchain_id>/tools/<tool_id>",
      "id": "<tool_id>",
      "name": "ci-pipeline",
      "tool_type_id": "pipeline",
      "referent": {
         "ui_href": "https://cloud.ibm.com/devops/pipelines/<tool_id>?env_id=ibm:yp:us-south"
      }
   },
   "toolchain.pipeline-run": {
      "id": "<run_id>",
      "run_number": 11,
      "start_time": "2023-04-17T16:48:36.928Z",
      "ui_href": "https://cloud.ibm.com/devops/pipelines/<tool_id>/<stage_id>/<run_id>?env_id=<region_id>",
      "trigger": {
         "href": "https://api.<region>.devops.cloud.ibm.com/pipeline/v2/tekton_pipelines/<tool_id>/triggers/<trigger_id>",
         "id": "<trigger_id>",
         "name": "my-trigger",
         "type": "manual"
      }
   }
}

Die folgende Tabelle enthält detaillierte Informationen zu den einzelnen Ereignisbenachrichtigungseigenschaften.

Eigenschaften in einer Ereignisbenachrichtigungs-Nutzlast
Eigenschaft Beschreibung
subject Optional. Das Objekt, das das Subjekt darstellt, das das Ereignis eingeleitet hat. Dieses Objekt kann die folgenden Felder enthalten:

name: Der Name des Subjekts.

email: Die E-Mail des Betreffs.

iam_id: Die IAM-ID des Subjekts.

toolchain.instance Das Objekt, das die Toolchain darstellt, aus der das Ereignis stammt. Dieses Objekt enthält die folgenden Felder:

crn: Der CRN der Toolchain.

id: Die ID der Toolchain.

resource_group_id: Die ID der Ressourcengruppe der Toolchain.

name: Der Name der Toolchain.

href: Der öffentliche API-Endpunkt für die Toolchain.

ui_href: Der Benutzerschnittstellenendpunkt für die Toolchain.

toolchain.tool-instance Optional. Das Objekt, das die Toolchain-Instanz darstellt, die am Ereignis teilnimmt. Dieses Objekt ist vorhanden und gilt nur für Ereignisse, die für ein Tool oder eine Toolintegration spezifisch sind. Für die Subtypen toolchain_bind und toolchain_unbind ist dieses Objekt die Toolintegrationsinstanz, die gebunden oder nicht gebunden wird. Bei Pipelineereignissen ist dieses Objekt die Instanz der Pipeline-Toolintegration, aus der das Ereignis stammt. Dieses Objekt enthält die folgenden Felder:

id: Die ID der Toolintegrationsinstanz

tool_type_id: Die ID des -Tooltyps.

href: Der öffentliche API-Endpunkt für die Instanz der Toolintegration.

state: Der Status der Toolintegrationsinstanz.

referent Ein Objekt, das Informationen zu dem Tool enthält, das von der Toolintegrationsinstanz dargestellt wird Beispiel: ui_href ist der Benutzerschnittstellenendpunkt für die Toolintegration, die durch die Toolintegrationsinstanz dargestellt wird.

name: Optional. Der Name der Toolintegrationsinstanz.

toolchain.pipeline-run Optional. Das Objekt, das die Ausführung der Tekton-Pipeline oder der Classic-Pipeline-Stage darstellt, aus der das Ereignis stammt. Dieses Objekt ist vorhanden und gilt nur für Pipelineereignisse und enthält die folgenden Felder:

id: Die ID der Tekton-Pipelineausführung oder Classic-Pipeline-Stage.

ui_href: Der UI-Endpunkt der Tekton-Pipelineausführung oder der Stage 'Classic Pipeline'.

run_number: Optional. Die Ausführungsnummer der Tekton-Pipelineausführung oder der Stage 'Classic Pipeline'.

start_time: Optional. Die Startzeit der Ausführung im ISO 8601 -Format.

finish_time: Optional. Die Zeit im ISO 8601 -Format, zu der die Ausführung beendet wurde.

duration: Optional. Die Ausführungsdauer im Format ISO 8601.

trigger: Optional. Ein Objekt, das Informationen zu dem Auslöser enthält, der die Tekton-Pipeline ausgeführt hat. Beispiel: name. Dies ist der Name des Tekton-Pipelineauslösers.

toolchain.external-event Optional. Das Objekt, das die Details eines benutzerdefinierten Clientereignisses enthält, das aus dem Aufruf der API POST /toolchains/{toolchain_id}/events resultiert. Dieses Objekt ist vorhanden und gilt nur für kundenspezifische Ereignisse. Dieses Objekt enthält die folgenden Felder:

id: Die ID des benutzerdefinierten Clientereignisses, das von der API POST /toolchains/{toolchain_id}/events generiert wurde.

title: Der Wert des Felds title in den Anforderungsnutzdaten für die API POST /toolchains/{toolchain_id}/events

description: Der Wert des Felds description in den Anforderungsnutzdaten für die API POST /toolchains/{toolchain_id}/events

data: Optional. Das Vorhandensein und der Wert dieses Felds hängt von den Anforderungsnutzdaten ab, die an die POST /toolchains/{toolchain_id}/events-API übergeben werden. Wenn die Anfrage an die API ein content_type oder text/plain angibt, ist das Feld data mit dem Wert des Feldes data.text_plain.content aus der Nutzlast der Anfrage vorhanden, das die Zeichenkettendaten enthält. Wenn die Anfrage an die API ein content_type oder application/json angibt, ist das Feld data mit dem Wert des Feldes data.application_json.content aus der Nutzlast der Anfrage vorhanden, das die JSON-Daten enthält. Beachten Sie, dass die JSON-Daten auf eine maximale Tiefe von 5 beschränkt sind. Wenn in der Anforderung an die API der Wert content_type none angegeben ist, wird das Feld data weggelassen.