Activation des notifications d'événements pour les chaînes d'outils
Continuous Delivery sera supprimé dans les régions suivantes le 12 février 2027 : au-syd, ca-tor, us-east. Code Risk Analyzer sera également retiré du marché dans toutes les régions à cette date. Si ces fonctionnalités ne sont pas activement utilisées dans une région donnée, elles pourraient y être supprimées plus tôt et ne plus accepter de nouvelles instances. En savoir plus
En tant qu'administrateur de IBM Cloud® Continuous Delivery chaînes d'outils, vous pouvez envoyer des notifications d'événements dans une chaîne d'outils ou une intégration d'outils à d'autres utilisateurs ou à des destinataires humains, par e-mail, SMS, Slack ou d'autres canaux de distribution PagerDuty, pris en charge. Vous pouvez également envoyer ces notifications d'événements à d'autres applications afin de créer une logique à l'aide de la programmation événementielle, en utilisant par exemple des webhooks. Cette approche est rendue possible par l'intégration entre les chaînes d'outils et IBM Cloud® Event Notifications.
Pour envoyer des informations à Event Notifications, vous devez ajouter une intégration d'outils Event Notifications à votre chaîne d'outils. Pour plus d'informations sur l'utilisation de Event Notifications, voir Initiation à Event Notifications.
Vous pouvez désormais distribuer des notifications d'événements en utilisant l'intégration de l'outil Event NotificationsEvent Notifications est la méthode préférée pour distribuer des notifications à Slack et à d'autres canaux de communication tels que PagerDuty, email, SMS, notifications push, webhook, Microsoft® Teams, ServiceNow, et IBM Cloud Functions.
Comment les événements sont collectés et envoyés par les chaînes d'outils
Lorsqu'un événement d'intérêt se produit dans une chaîne d'outils ou l'une des intégrations d'outils prises en charge, la chaîne d'outils communique avec une instance Event Notifications connectée pour transmettre une notification à une destination prise en charge.
Les chaînes d'outils prennent en charge deux types d'événement:
- Les événements intégrés sont générés automatiquement dans une chaîne d'outils. Par exemple, des événements intégrés sont envoyés lorsque des intégrations d'outils sont ajoutées à ou supprimées d'une chaîne d'outils, lorsque les exécutions de pipeline démarrent et lorsque les exécutions de pipeline se terminent. Le contenu d'un événement intégré est constitué de données déterminées par la chaîne d'outils.
- Les événements personnalisés du client sont générés par une chaîne d'outils à la demande d'un client à l'aide de l'API POST /toolchains/{toolchain_id}/events. Le contenu d'un événement client sur mesure se compose de données déterminées par la chaîne d'outils et de données fournies à l'API par le client.
Les étapes du pipeline Tekton peuvent tirer parti de l'API POST {toolchain_id} /toolchains//events personnalisée du client pour envoyer des événements personnalisés à Event Notifications des destinations contenant des informations pertinentes et significatives pour les étapes.
Evénements de Continuous Delivery
Le tableau suivant répertorie les événements de la chaîne d'outils.
Les caractères :1 qui sont ajoutés à chaque sous-type représentent les numéros de version majeure.
| Nom de l’événement | Type d'événement | Sous-type | Description |
|---|---|---|---|
Client event |
com.ibm.cloud.toolchain.client |
event:1 |
Cet événement client sur mesure est envoyé lorsqu'un client appelle l'API POST /toolchains/{toolchain_id}/events. |
Tool created |
com.ibm.cloud.toolchain.toolchain |
toolchain_bind:1 |
Cet événement intégré est envoyé lorsqu'une intégration d'outils est créée et ajoutée à une chaîne d'outils. |
Tool deleted |
com.ibm.cloud.toolchain.toolchain |
toolchain_unbind:1 |
Cet événement intégré est envoyé lorsqu'une intégration d'outils est supprimée et retirée d'une chaîne d'outils. |
Pipeline run started |
com.ibm.cloud.toolchain.pipeline |
pipeline_start:1 |
Cet événement intégré est envoyé lorsqu'une exécution de pipeline Tekton ou une étape de pipeline classique démarre. |
Pipeline run succeeded |
com.ibm.cloud.toolchain.pipeline |
pipeline_success:1 |
Cet événement intégré est envoyé lorsqu'une exécution de pipeline Tekton ou une étape de pipeline classique aboutit. |
Pipeline run failed |
com.ibm.cloud.toolchain.pipeline |
pipeline_fail:1 |
Cet événement intégré est envoyé lorsqu'une exécution de pipeline Tekton ou une étape de pipeline Classic se termine avec un statut d'échec. Par exemple, cet événement est envoyé lorsqu'un déploiement est tenté, mais qu'il échoue. |
Pipeline run cancelled |
com.ibm.cloud.toolchain.pipeline |
pipeline_cancel:1 |
Cet événement intégré est envoyé lorsqu'une exécution de pipeline Tekton ou une étape de pipeline classique est annulée. |
Pipeline run error |
com.ibm.cloud.toolchain.pipeline |
pipeline_error:1 |
Cet événement intégré est envoyé lorsqu'une exécution de pipeline Tekton rencontre une erreur et ne s'est probablement pas terminée correctement. Cet événement est principalement utilisé pour les problèmes d'infrastructure et de configuration, par exemple lorsque Tekton mal formé empêche l'exécution du pipeline de démarrer. |
Activation des notifications
Les événements intégrés et sur mesure du client qui sont générés par une chaîne d'outils ou une intégration d'outils associée peuvent être transmis à une instance de service Event Notifications disponible dans le même compte.
Assurez-vous que l'instance de service Event Notifications sélectionnée dispose d'une politique d'autorisation IAM qui permet à la chaîne d'outils d'envoyer des événements à cette instance de service. Pour plus d'informations sur l'octroi d'une autorisation avec l'instance Event Notifications de service, consultez Pourquoi l'autorisation d'intégrer une Event Notifications instance m'est-elle refusée?.
Connexion à Event Notifications dans la console
Configurez Event Notifications pour envoyer des événements critiques à partir des chaînes d'outils et des instances d'intégration d'outils:
-
Si vous disposez d’une chaîne d’outils et que vous souhaitez y ajouter l’intégration de cet outil, dans la console d’ IBM Cloud, cliquez sur l’icône de menu (
> Automatisation de la plateforme > Chaînes d’outils. Sur la page Chaînes d'outils, cliquez sur la chaîne d'outils afin d'ouvrir sa page Vue d'ensemble.
a. Cliquez sur Ajouter un outil.
b. Dans la section Intégrations d'outils, cliquez sur Event Notifications.
-
Entrez le nom que vous souhaitez afficher pour cette intégration d'outils sur la carte Event Notifications de votre chaîne d'outils. Ce nom est utilisé pour identifier l'intégration d'outils dans votre chaîne d'outils.
-
Sélectionnez l'instance Event Notifications à laquelle connecter la chaîne d'outils.
-
Cliquez sur Créer une intégration pour ajouter l'intégration de l'outil Event Notifications à votre chaîne d'outils.
-
Sur la page Vue d'ensemble de votre chaîne d'outils, sur la carte des outils IBM Cloud, cliquez sur Event Notifications.
Connexion à Event Notifications avec l'API
Vous pouvez ajouter l'intégration d'outils Event Notifications à votre chaîne d'outils à l'aide de l'API.
-
Obtenez un jeton bearer IAM. Sinon, si vous utilisez un SDK, obtenez une clé d'API IAM et définissez les options client à l'aide de variables d'environnement.
export CD_TOOLCHAIN_AUTH_TYPE=iam && \ export CD_TOOLCHAIN_APIKEY={iam_api_key} && \ export CD_TOOLCHAIN_URL={base_url} -
Recherchez l'ID de la chaîne d'outils dans laquelle vous souhaitez créer votre intégration d'outils.
-
Spécifiez
eventnotificationscommetool_type_id. -
Spécifiez les
tool_parameterssuivants qui sont requis par l'intégration d'outils:name: nom utilisé pour identifier l'intégration d'outils Event Notifications.instance-crn: nom de ressource de cloud (CRN) de l'instance de service Event Notifications.
-
Ajouter l'intégration de l'outil au sein de la chaîne d'outils ciblée.
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();
Le tableau suivant répertorie et décrit chacune des variables utilisées dans les étapes précédentes.
| Variable | Description |
|---|---|
{base_url} |
Le point de terminaison de URL l'API Toolchain. Pour plus d'informations sur les valeurs prises en charge, consultez la section Point de terminaison URL. |
{iam_api_key} |
Votre clé d'API IAM. |
{iam_token} |
Un jeton IAM de type bearer valide. |
{tool_name} |
Nom de l'intégration d'outils. |
{event_notifications_tool_integration_name} |
Nom de l'instance du service Event Notifications. |
{event_notifications_service_crn} |
Le nom de ressource cloud (CRN) de l'instance du service Event Notifications. |
{toolchain_id} |
Chaîne d'outils dans laquelle créer l'intégration d'outils. |
Ajout d'une intégration d'outils à Terraform
Vous pouvez ajouter l'intégration d'outils Event Notifications à votre chaîne d'outils à l'aide de Terraform.
IBM Cloud La version Terraform 1.53.0 provider ou ultérieure est requise pour ajouter une intégration d'outil à l'aide de Terraform.
-
Pour installer l'interface de ligne de commande (CLI) de Terraform et configurer le plug-in du fournisseur IBM Cloud pour Terraform, suivez le tutoriel Premiers pas avec Terraform disponible sur IBM Cloud®.
-
Créez un fichier de configuration Terraform nommé
main.tf. Dans ce fichier, ajoutez la configuration permettant de créer des instances de ressources à l'aide du langage de configuration HashiCorp (HCL). Pour plus d'informations sur l'utilisation de ce langage de configuration, voir la documentation Terraform.L'exemple suivant crée une intégration d'outils Delivery Pipeline en utilisant la ressource
ibm_cd_toolchain_tool_pipeline, oùtoolchain_idest un identificateur global unique qui représente la chaîne d'outils dans laquelle créer l'intégration d'outils.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}" } }Pour plus d'informations sur les ressources d'intégration d'outils, voir la liste complète des ressources d'intégration d'outils prises en charge dans le Registre Terraform IBM Cloud.
-
Initialisez l'interface de ligne de commande de Terraform.
terraform init -
Créez un plan d'exécution Terraform. Ce plan récapitule les actions à exécuter pour créer l'intégration d'outils.
terraform plan -
Appliquer le plan d’exécution Terraform. Terraform effectue les actions requises pour créer l'intégration d'outils.
terraform apply
Le tableau suivant répertorie et décrit chacune des variables utilisées dans les étapes précédentes.
| Variable | Description |
|---|---|
{event_notifications_tool_integration_name} |
Nom de l'instance du service Event Notifications. |
{event_notifications_service_crn} |
CRN de l'instance de service Event Notifications. |
{toolchain_id} |
Chaîne d'outils dans laquelle créer l'intégration d'outils. |
Distribution de notifications pour sélectionner des destinations
Après avoir activé les notifications d'événements pour une chaîne d'outils, créez des rubriques, des destinations et des abonnements dans Event Notifications afin que les alertes puissent être transmises et distribuées aux destinations sélectionnées.
Pour obtenir la liste complète des destinations prises en charge, voir la documentation Event Notifications.
Détails du contenu de la notification
Les événements générés par les chaînes d'outils et les instances d'intégration d'outils associées contiennent diverses zones qui vous aident à identifier la source et les détails d'un événement.
L'API POST {toolchain_id} /toolchains//events renverra un code d'état 200 pour indiquer que la requête a été traitée. Cela ne signifie pas nécessairement que les événements ont été envoyés avec succès aux instances de service Event Notifications correspondantes.
Les notifications d'événements intégrées des chaînes d'outils et des instances d'intégration d'outils contiennent uniquement des propriétés de métadonnées, telles que des noms ou des identificateurs de ressources. Les données sensibles, telles que les clés API ou les mots de passe, ne sont pas incluses dans les événements générés.
Les notifications d'événements personnalisées du client contiennent les données fournies par le client à l'API POST {toolchain_id} /toolchains//events. N'incluez pas de données d'identification, d'informations d'identification personnelle ou d'autres informations sensibles dans les appels à l'API.
Les propriétés envoyées à Event Notifications varient en fonction du type d'événement. Par exemple, si un événement com.ibm.cloud.toolchain.pipeline:pipeline_start:1 a lieu, la chaîne d'outils envoie un contenu de notification à
Event Notifications qui est similaire à l'exemple suivant.
{
"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"
}
}
}
Le tableau suivant fournit des informations détaillées sur chaque propriété de notification d'événements.
| Propriété | Description |
|---|---|
subject |
Optionnel. Objet représentant le sujet à l'origine de l'événement. Cet objet peut contenir les zones suivantes:
|
toolchain.instance |
Objet qui représente la chaîne d'outils d'où provient l'événement. Cet objet contient les zones suivantes:
|
toolchain.tool-instance |
Optionnel. Objet qui représente l'instance de chaîne d'outils qui participe à l'événement. Cet objet est présent et applicable uniquement aux événements spécifiques à un outil ou à une intégration d'outils. Pour les sous-types toolchain_bind et toolchain_unbind, cet objet est l'instance d'intégration d'outils qui est liée ou non liée. Pour les événements de pipeline, cet objet est l'instance d'intégration d'outil de pipeline d'où provient l'événement. Cet objet
contient les zones suivantes:
|
toolchain.pipeline-run |
Optionnel. Objet qui représente l'exécution du pipeline Tekton ou l'exécution de l'étape de pipeline classique d'où provient l'événement. Cet objet est présent et applicable uniquement aux événements de pipeline et contient les zones suivantes:
|
toolchain.external-event |
Optionnel. Objet contenant les détails d'un événement client sur mesure résultant de l'appel de l'API POST /toolchains/{toolchain_id}/events.
Cet objet est présent et applicable uniquement aux événements client sur mesure. Cet objet contient les zones suivantes:
|