Abilitazione delle notifiche eventi per le toolchain
DevOps Insights Il servizio giungerà al termine e verrà interrotto il 31 agosto 2026. Il servizio " Continuous Delivery " verrà interrotto nelle seguenti regioni il 12 febbraio 2027: au-syd, ca-tor, us-east. A partire da tale data, anche Code Risk Analyzer verrà ritirato dal mercato in tutte le regioni. Se in una regione non si riscontra un utilizzo attivo di queste funzionalità, queste potrebbero essere dismesse in anticipo e non accettare più nuove istanze. Per saperne di più
In qualità di amministratore di IBM Cloud® Continuous Delivery toolchain, potresti voler inviare notifiche relative a eventi in una toolchain o a un'integrazione di strumenti ad altri utenti o destinatari umani, utilizzando e-mail, SMS, Slack o altri canali di consegna PagerDuty, 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 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 le notifiche degli eventi utilizzando lo strumento di integrazione Event NotificationsEvent 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 passaggi della pipeline Tekton possono sfruttare l'API POST {toolchain_id} /toolchains//events personalizzata dal cliente per inviare eventi personalizzati a Event Notifications destinazioni che trasportano informazioni rilevanti e significative per i passaggi.
Eventi per Continuous Delivery
La tabella seguente elenca gli eventi relativi alla toolchain.
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.
Assicurarsi che l'istanza di servizio Event Notifications selezionata disponga di una politica di autorizzazione IAM che consenta alla toolchain di inviare eventi a tale istanza di servizio. Per ulteriori informazioni sulla concessione dell'autorizzazione con l'istanza Event Notifications di servizio, vedere Perché mi viene negato il permesso di integrare Event Notifications un'istanza?
Connessione a Event Notifications nella console
Configura Event Notifications per inviare eventi critici dalle toolchain e dalle istanze di integrazione dello strumento:
-
Se disponi già di una toolchain e desideri integrarvi questo strumento, dalla console IBM Cloud, fai clic sull'icona del menu (
) > Automazione della piattaforma > Toolchain. Nella pagina Toolchains, fai clic sulla toolchain per aprirne la pagina di panoramica.
a. Fai clic su Add tool.
b. Nella sezione Integrazioni strumento, fai clic su Event Notifications.
-
Digita il nome che desideri visualizzare per questa integrazione dello strumento nella scheda " Event Notifications " della tua catena di strumenti. Questo nome viene utilizzato per identificare l'integrazione dello strumento nella tua toolchain.
-
Seleziona l'istanza Event Notifications a cui connettere la toolchain.
-
Fai clic su " Crea integrazione " per aggiungere l'integrazione con lo strumento Event Notifications alla tua catena di strumenti.
-
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
eventnotificationscometool_type_id. -
Specifica i seguenti
tool_parametersrichiesti 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'endpoint dell'API URL Toolchain. Per ulteriori informazioni sui valori supportati, vedere Endpoint URL. |
{iam_api_key} |
La chiave API IAM. |
{iam_token} |
Un token bearer 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 Per aggiungere un'integrazione di strumenti utilizzando Terraform è necessaria la versione Terraform 1.53.0 provider o successive.
-
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®.
-
Crea un file di configurazione Terraform denominato “
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, consultare la Event Notifications documentazione.
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 {toolchain_id} /toolchains//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 istanze di servizio Event Notifications corrispondenti.
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 degli eventi personalizzate dal cliente contengono i dati forniti dal cliente all'API POST {toolchain_id} /toolchains//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:
|