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.
| 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:
-
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 (
) > 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.
-
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.
-
Wählen Sie die Instanz Event Notifications aus, mit der die Toolchain verbunden werden soll.
-
Klicken Sie auf Integration erstellen, um die Event Notifications-Tool-Integration zu Ihrer Toolchain hinzuzufügen.
-
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.
-
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} -
Suchen Sie nach der ID der Toolchain, in der Sie Ihre Toolintegration erstellen wollen.
-
Geben Sie
eventnotificationsalstool_type_idan. -
Geben Sie die folgenden
tool_parametersan, 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.
-
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.
| 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.
-
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®.
-
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_pipelineerstellt, wobeitoolchain_ideine 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.
-
Terraform-Befehlszeilenschnittstelle initialisieren.
terraform init -
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 -
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.
| 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.
| Eigenschaft | Beschreibung |
|---|---|
subject |
Optional. Das Objekt, das das Subjekt darstellt, das das Ereignis eingeleitet hat. Dieses Objekt kann die folgenden Felder enthalten:
|
toolchain.instance |
Das Objekt, das die Toolchain darstellt, aus der das Ereignis stammt. Dieses Objekt enthält die folgenden Felder:
|
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:
|
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:
|
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:
|