Abilitazione delle notifiche eventi per le toolchain
Come amministratore di IBM Cloud® Continuous Delivery catene di strumenti, potreste voler inviare notifiche di eventi in una catena di strumenti o in un'integrazione di strumenti ad altri utenti o a destinazioni umane, utilizzando e-mail, SMS, Slack, PagerDuty, o altri canali di consegna supportati. Inoltre, potresti voler inviare queste notifiche di eventi ad altre applicazioni per creare la logica utilizzando la programmazione basata sugli eventi utilizzando, ad esempio, i webhook. Questo approccio è reso possibile dall'integrazione tra le toolchain e IBM Cloud® Event Notifications.
Per inviare informazioni a Event Notifications, devi aggiungere un'integrazione dello strumento Event Notifications alla tua toolchain. Per ulteriori informazioni sull'utilizzo di Event Notifications, vedi Introduzione a Event Notifications.
È ora possibile distribuire notifiche di eventi utilizzando l'integrazione dello strumento Event Notifications. Event Notifications è il metodo preferito per distribuire notifiche a Slack e ad altri canali di comunicazione come PagerDuty, e-mail, SMS, notifiche push, webhook, Microsoft® Teams, ServiceNow, e IBM Cloud Functions.
Come vengono raccolti e inviati gli eventi dalle toolchain
Quando si verifica un evento di interesse in una toolchain o in una delle integrazioni dello strumento supportate, la toolchain comunica con un'istanza Event Notifications connessa per inoltrare una notifica a una destinazione supportata.
Le toolchain supportano due tipi di eventi:
- Gli eventi integrati vengono generati automaticamente all'interno di una toolchain. Ad esempio, gli eventi integrati vengono inviati quando le integrazioni dello strumento vengono aggiunte o rimosse da una toolchain, quando le esecuzioni della pipeline vengono avviate e quando le esecuzioni della pipeline terminano. Il payload di un evento integrato consiste di dati determinati dalla toolchain.
- Gli eventi su misura del client vengono generati da una toolchain su richiesta di un client utilizzando l'API POST /toolchains/{toolchain_id}/events. Il payload di un evento personalizzato del client è costituito dai dati determinati dalla toolchain e dai dati forniti all'API dal client.
I passi della pipeline Tekton possono sfruttare l'API POST /toolchains/{toolchain_id}/events personalizzata del client per inviare eventi personalizzati a destinazioni Event Notifications che contengono informazioni rilevanti e significative per i passi.
Eventi per Continuous Delivery
La tabella seguente elenca gli eventi della catena degli strumenti.
I caratteri :1
accodati a ciascun sottotipo rappresentano i numeri di versione principali.
Nome evento | Tipo di evento | Tipo secondario | Descrizione |
---|---|---|---|
Client event |
com.ibm.cloud.toolchain.client |
event:1 |
Questo evento su misura del client viene inviato quando un client richiama l'API POST /toolchains/{toolchain_id}/events. |
Tool created |
com.ibm.cloud.toolchain.toolchain |
toolchain_bind:1 |
Questo evento integrato viene inviato quando un'integrazione dello strumento viene creata e aggiunta ad una toolchain. |
Tool deleted |
com.ibm.cloud.toolchain.toolchain |
toolchain_unbind:1 |
Questo evento integrato viene inviato quando un'integrazione dello strumento viene eliminata e rimossa da una toolchain. |
Pipeline run started |
com.ibm.cloud.toolchain.pipeline |
pipeline_start:1 |
Questo evento integrato viene inviato quando viene avviata un'esecuzione della pipeline Tekton o una fase della pipeline Classic. |
Pipeline run succeeded |
com.ibm.cloud.toolchain.pipeline |
pipeline_success:1 |
Questo evento integrato viene inviato quando un'esecuzione della pipeline Tekton o una fase della pipeline Classic vengono completate correttamente. |
Pipeline run failed |
com.ibm.cloud.toolchain.pipeline |
pipeline_fail:1 |
Questo evento integrato viene inviato quando una esecuzione della pipeline Tekton o una fase della pipeline Classic viene completata con uno stato di malfunzionamento. Ad esempio, questo evento viene inviato quando si tenta una distribuzione, ma non viene completato correttamente. |
Pipeline run cancelled |
com.ibm.cloud.toolchain.pipeline |
pipeline_cancel:1 |
Questo evento integrato viene inviato quando viene annullata un'esecuzione della pipeline Tekton o una fase della pipeline Classic. |
Pipeline run error |
com.ibm.cloud.toolchain.pipeline |
pipeline_error:1 |
Questo evento integrato viene inviato quando un'esecuzione della pipeline Tekton rileva un errore e probabilmente non è stata completata correttamente. Questo evento viene utilizzato principalmente per problemi di infrastruttura e di configurazione, ad esempio quando Tekton in formato non corretto impedisce l'avvio dell'esecuzione della pipeline. |
Abilitazione delle notifiche
Gli eventi integrati e personalizzati del client generati da una toolchain o da un'integrazione dello strumento associato possono essere inoltrati a un'istanza del servizio Event Notifications disponibile nello stesso account.
Assicurati che l'istanza del servizio Event Notifications selezionata abbia una politica di autorizzazione IAM che consente alla toolchain di inviare eventi a questa istanza del servizio. Per ulteriori informazioni sulla concessione dell'autorizzazione con l'istanza del servizio Event Notifications, vedi Perché mi viene negata l'autorizzazione per integrare un'istanza Event Notifications ?.
Connessione a Event Notifications nella console
Configura Event Notifications per inviare eventi critici dalle toolchain e dalle istanze di integrazione dello strumento:
-
Se si dispone di una catena di strumenti e vi si aggiunge l'integrazione di questo strumento, dalla console IBM Cloud, fare clic sull'icona Menu
Automazione piattaforma > Catene di strumenti. Nella pagina Toolchains, fai clic sulla toolchain per aprirne la pagina di panoramica. In alternativa, nella pagina della panoramica della tua applicazione, nella scheda di fornitura continua, fai clic su View toolchain. Fai quindi clic su Overview.
a. Fai clic su Add tool.
b. Nella sezione Integrazioni strumento, fai clic su Event Notifications.
-
Digitare il nome che si desidera visualizzare per questa integrazione di strumenti nella scheda Event Notifications della propria toolchain. Questo nome viene utilizzato per identificare l'integrazione dello strumento nella tua toolchain.
-
Seleziona l'istanza Event Notifications a cui connettere la toolchain.
-
Fare clic su Crea integrazione per aggiungere l'integrazione dello strumento Event Notifications alla propria toolchain.
-
Nella pagina Panoramica della tua toolchain, nella scheda IBM Cloud tools, fai clic su Event Notifications.
Connessione a Event Notifications con l'API
Puoi aggiungere l'integrazione dello strumento Event Notifications alla tua toolchain utilizzando l'API.
-
Ottieni un token di connessione IAM. In alternativa, se stai utilizzando un SDK, ottieni una chiave API IAM e imposta le opzioni client utilizzando le variabili di ambiente.
export CD_TOOLCHAIN_AUTH_TYPE=iam && \ export CD_TOOLCHAIN_APIKEY={iam_api_key} && \ export CD_TOOLCHAIN_URL={base_url}
-
Cerca l'ID della toolchain in cui vuoi creare la tua integrazione dello strumento.
-
Specificare
eventnotifications
cometool_type_id
. -
Specifica i seguenti
tool_parameters
richiesti dall'integrazione dello strumento:name
: il nome utilizzato per identificare l'integrazione dello strumento Event Notifications.instance-crn
: il CRN (Cloud Resource Name) dell'istanza del servizio Event Notifications.
-
Aggiungi l'integrazione dello strumento nella toolchain di destinazione.
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();
La seguente tabella elenca e descrive ciascuna delle variabili utilizzate nei passi precedenti.
Variabile | Descrizione |
---|---|
{base_url} |
L'URL dell'endpoint API toolchain. Per ulteriori informazioni sui valori supportati, vedi URL endpoint. |
{iam_api_key} |
La chiave API IAM. |
{iam_token} |
Un token portatore IAM valido. |
{tool_name} |
Il nome dell'integrazione dello strumento. |
{event_notifications_tool_integration_name} |
Il nome dell'istanza del servizio Event Notifications. |
{event_notifications_service_crn} |
Il CRN (Cloud Resource Name) dell'istanza del servizio Event Notifications. |
{toolchain_id} |
La toolchain in cui creare l'integrazione dello strumento. |
Aggiunta di un'integrazione dello strumento con Terraform
Puoi aggiungere l'integrazione dello strumento Event Notifications alla tua toolchain utilizzando Terraform.
IBM Cloud È richiesta la versione del provider Terraform 1.53.0 o successiva per aggiungere un'integrazione dello strumento utilizzando Terraform.
-
Per installare la CLI (command - line interface) Terraform e configurare il plug-in del fornitore IBM Cloud per Terraform, segui l'esercitazione per Introduzione a Terraform su IBM Cloud®.
-
Creare un file di configurazione di Terraform chiamato '
main.tf
. In questo file, aggiungere la configurazione per creare le istanze di risorsa utilizzando l'HCL (Configuration Language) HashiCorp. Per ulteriori informazioni sull'utilizzo di questa lingua di configurazione, consultare la documentazione Terraform.Il seguente esempio crea un'integrazione dello strumento Delivery Pipeline utilizzando la risorsa
ibm_cd_toolchain_tool_pipeline
, dovetoolchain_id
è un GUID che rappresenta la toolchain in cui creare l'integrazione dello strumento.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}" } }
Per ulteriori informazioni sulle risorse di integrazione dello strumento, vedi l'elenco completo delle risorse di integrazione dello strumento supportate in IBM Cloud Terraform Registry.
-
Inizializza la CLI Terraform.
terraform init
-
Creare un piano di esecuzione Terraform. Questo piano riepiloga le azioni che devono essere eseguite per creare l'integrazione dello strumento.
terraform plan
-
Applicare il piano di esecuzione di Terraform. Terraform intraprende le azioni richieste per creare l'integrazione dello strumento.
terraform apply
La seguente tabella elenca e descrive ciascuna delle variabili utilizzate nei passi precedenti.
Variabile | Descrizione |
---|---|
{event_notifications_tool_integration_name} |
Il nome dell'istanza del servizio Event Notifications. |
{event_notifications_service_crn} |
Il CRN del servizio Event Notifications. |
{toolchain_id} |
La toolchain in cui creare l'integrazione dello strumento. |
Consegna di notifiche a destinazioni selezionate
Dopo aver abilitato le notifiche di eventi per una toolchain, crea argomenti, destinazioni e sottoscrizioni in Event Notifications in modo che gli avvisi possano essere inoltrati e consegnati alle destinazioni selezionate.
Per un elenco completo delle destinazioni supportate, vedi la documentazione diEvent Notifications.
Dettagli payload di notifica
Gli eventi generati dalle toolchain e le relative istanze di integrazione dello strumento associate contengono vari campi che ti aiutano a identificare l'origine e i dettagli di un evento.
L'API POST /toolchains/{toolchain_id}/events restituirà un codice di stato 200 per indicare che la richiesta è stata elaborata. Ciò non significa necessariamente che gli eventi siano stati inviati correttamente alle corrispondenti istanze del servizio Event Notifications.
Le notifiche di eventi integrate dalle toolchain e dalle istanze di integrazione dello strumento contengono solo proprietà di metadati, come nomi o identificatori di risorse. I dati sensibili, come le chiavi API o le password, non vengono inclusi negli eventi generati.
Le notifiche di eventi su misura del client contengono i dati forniti dal client all'API POST /toolchains/{toolchain_id}/events. Non includere credenziali, informazioni di identificazione personali o altre informazioni sensibili nelle chiamate all'API.
Le proprietà inviate a Event Notifications variano a seconda del tipo di evento. Ad esempio, se si verifica un evento com.ibm.cloud.toolchain.pipeline:pipeline_start:1
, la toolchain invia un payload di notifica a Event Notifications
che è simile al seguente esempio.
{
"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"
}
}
}
La seguente tabella fornisce informazioni dettagliate su ciascuna proprietà di notifica eventi.
Proprietà | Descrizione |
---|---|
subject |
Facoltativo. L'oggetto che rappresenta il soggetto che ha avviato l'evento. Questo oggetto potrebbe contenere i seguenti campi:
|
toolchain.instance |
L'oggetto che rappresenta la toolchain in cui ha avuto origine l'evento. Questo oggetto contiene i seguenti campi:
|
toolchain.tool-instance |
Facoltativo. L'oggetto che rappresenta l'istanza della toolchain che partecipa all'evento. Questo oggetto è presente e applicabile solo agli eventi specifici di un'integrazione di strumenti o strumenti. Per i sottotipi toolchain_bind e toolchain_unbind , questo oggetto è l'istanza di integrazione dello strumento di cui viene eseguito il bind o l'annullamento del bind. Per gli eventi pipeline, questo oggetto è l'istanza di integrazione dello strumento
pipeline in cui ha avuto origine l'evento. Questo oggetto contiene i campi riportati di seguito:
|
toolchain.pipeline-run |
Facoltativo. L'oggetto che rappresenta l'esecuzione della pipeline Tekton o la fase della pipeline Classic in cui ha avuto origine l'evento. Questo oggetto è presente e applicabile solo agli eventi della pipeline e contiene i seguenti
campi:
|
toolchain.external-event |
Facoltativo. L'oggetto che contiene i dettagli di un evento personalizzato del client risultante dal richiamo dell'API POST /toolchains/{toolchain_id}/events.
Questo oggetto è presente e applicabile solo agli eventi su misura del client. Questo oggetto contiene i seguenti campi:
|