Ativação de notificações de eventos para cadeias de ferramentas
DevOps Insights chegará ao fim de sua vida útil e será descontinuado em 31 de agosto de 2026. O serviço Continuous Delivery será descontinuado nas seguintes regiões em 12 de fevereiro de 2027: au-syd, ca-tor, us-east. O Code Risk Analyzer também será descontinuado em todas as regiões nessa data. Se uma região não apresentar uso ativo desses recursos, os recursos nessa região poderão ser descontinuados mais cedo e deixar de aceitar novas instâncias. Saiba mais
Como administrador de IBM Cloud® Continuous Delivery toolchains, você pode querer enviar notificações de eventos em uma toolchain ou integração de ferramentas para outros usuários ou destinos humanos, usando e-mail, SMS, Slack ou PagerDuty, outros canais de entrega compatíveis. Além disso, talvez você queira enviar essas notificações de eventos para outros aplicativos a fim de criar uma lógica por meio da programação orientada a eventos, utilizando webhooks, por exemplo. Essa abordagem é viabilizada pela integração entre as cadeias de ferramentas e o IBM Cloud® Event Notifications.
Para enviar informações para Event Notifications, deve-se incluir uma Event Notifications integração de ferramenta em sua cadeia de ferramentas. Para obter mais informações sobre como trabalhar com Event Notifications, consulte Introdução ao Event Notifications.
Agora você pode distribuir notificações de eventos usando a integração da ferramenta Event NotificationsEvent Notifications é o método preferido para distribuir notificações para o Slack e outros canais de comunicação, como PagerDuty, e-mail, SMS, notificações por push, webhook, Microsoft® Teams, ServiceNow, e IBM Cloud Functions.
Como os eventos são coletados e enviados pelas cadeias de ferramentas
Quando um evento de interesse ocorre em uma cadeia de ferramentas ou uma das integrações de ferramentas suportadas, a cadeia de ferramentas se comunica com uma instância do Event Notifications conectada para encaminhar uma notificação para um destino suportado.
As cadeias de ferramentas suportam dois tipos de eventos:
- Eventos integrados são gerados automaticamente em uma cadeia de ferramentas. Por exemplo, eventos integrados são enviados quando integrações de ferramentas são incluídas ou removidas de uma cadeia de ferramentas, quando as execuções de pipeline são iniciadas e quando as execuções de pipeline são concluídas. A carga útil de um evento integrado consiste em dados determinados pela cadeia de ferramentas..
- Os eventos sob medida do cliente são gerados por uma cadeia de ferramentas na solicitação de um cliente usando a API POST /toolchains/{toolchain_id}/events. A carga útil de um evento customizado do cliente consiste em dados determinados pela cadeia de ferramentas e dados fornecidos para a API pelo cliente.
As etapas do pipeline do Tekton podem aproveitar a API POST {toolchain_id} /toolchains//events personalizada do cliente para enviar eventos personalizados para Event Notifications destinos que transportam informações relevantes e significativas para as etapas.
Eventos para o Continuous Delivery
A tabela a seguir lista os eventos da cadeia de ferramentas.
Os caracteres :1 que são anexados a cada subtipo representam números da versão principal.
| Nome do Evento | Tipo de evento | Subtipo | Descrição |
|---|---|---|---|
Client event |
com.ibm.cloud.toolchain.client |
event:1 |
Esse evento de cliente sob medida é enviado quando um cliente chama a API POST /toolchains/{toolchain_id}/events. |
Tool created |
com.ibm.cloud.toolchain.toolchain |
toolchain_bind:1 |
Esse evento integrado é enviado quando uma integração de ferramenta é criada e incluída em uma cadeia de ferramentas.. |
Tool deleted |
com.ibm.cloud.toolchain.toolchain |
toolchain_unbind:1 |
Esse evento integrado é enviado quando uma integração de ferramenta é excluída e removida de uma cadeia de ferramentas |
Pipeline run started |
com.ibm.cloud.toolchain.pipeline |
pipeline_start:1 |
Esse evento integrado é enviado quando uma execução de pipeline Tekton ou um estágio de pipeline Classic é iniciado. |
Pipeline run succeeded |
com.ibm.cloud.toolchain.pipeline |
pipeline_success:1 |
Esse evento integrado é enviado quando uma execução de pipeline Tekton ou um estágio de pipeline Classic é concluído com sucesso. |
Pipeline run failed |
com.ibm.cloud.toolchain.pipeline |
pipeline_fail:1 |
Esse evento integrado é enviado quando uma execução de pipeline do Tekton ou um estágio de pipeline do Classic é concluído com um status de falha Por exemplo, esse evento é enviado quando uma implementação é tentada, mas falha ao ser concluída com êxito |
Pipeline run cancelled |
com.ibm.cloud.toolchain.pipeline |
pipeline_cancel:1 |
Esse evento integrado é enviado quando uma execução de pipeline Tekton ou um estágio de pipeline Classic é cancelado. |
Pipeline run error |
com.ibm.cloud.toolchain.pipeline |
pipeline_error:1 |
Esse evento integrado é enviado quando uma execução de pipeline do Tekton encontra um erro e provavelmente não foi concluída com êxito. Esse evento é usado principalmente para problemas de infraestrutura ou de configuração, como quando o Tekton malformado impede que a execução do pipeline seja iniciada |
Ativando notificações
Eventos integrados e personalizados do cliente que são gerados por uma cadeia de ferramentas ou uma integração de ferramenta associada podem ser encaminhados para uma instância de serviço Event Notifications que está disponível na mesma conta.
Certifique-se de que a instância de Event Notifications serviço selecionada tenha uma política de autorização IAM que permita que o conjunto de ferramentas envie eventos para essa instância de serviço. Para obter mais informações sobre como conceder autorização com a instância Event Notifications de serviço, consulte Por que minha permissão para integrar uma Event Notifications instância foi negada?
Conectando-se ao Event Notifications no console
Configure Event Notifications para enviar eventos críticos de cadeias de ferramentas e instâncias de integração de ferramentas:
-
Se você já possui uma cadeia de ferramentas e deseja adicionar essa integração de ferramenta a ela, no console do IBM Cloud, clique no ícone de menu (
) > Automação de Plataforma > Cadeias de Ferramentas. Na página Cadeias de ferramentas, clique na cadeia de ferramentas para abrir a sua página de Visão geral.
a. Clique em Incluir ferramenta.
b. Na seção Integrações de ferramentas, clique em Event Notifications.
-
Digite o nome que você deseja exibir para esta integração de ferramentas no cartão do Event Notifications em sua cadeia de ferramentas. Este nome é usado para identificar a integração da ferramentas em sua cadeia de ferramentas.
-
Selecione a instância do Event Notifications à qual conectar a cadeia de ferramentas.
-
Clique em “Criar integração” para adicionar a integração da ferramenta Event Notifications à sua cadeia de ferramentas.
-
Na página “Visão geral” da sua cadeia de ferramentas, no cartão “ IBM Cloud ferramentas ”, clique em “ Event Notifications ”.
Conectando-se ao Event Notifications com a API
É possível incluir a integração da ferramenta Event Notifications em sua cadeia de ferramentas usando a API.
-
Obtenha um token de acesso do IAM Como alternativa, se você estiver usando um SDK, obtenha uma chave API do IAM e configure as opções do cliente usando variáveis de ambiente.
export CD_TOOLCHAIN_AUTH_TYPE=iam && \ export CD_TOOLCHAIN_APIKEY={iam_api_key} && \ export CD_TOOLCHAIN_URL={base_url} -
Consulte o ID da cadeia de ferramentas na qual você deseja criar sua integração de ferramenta.
-
Especifique
eventnotificationscomotool_type_id. -
Especifique o
tool_parametersa seguir que é necessário pela integração de ferramenta:name: o nome usado para identificar a integração da ferramenta Event Notifications.instance-crn: o Cloud Resource Name (CRN) da instância de serviço Event Notifications.
-
Adicione a integração da ferramenta à cadeia de ferramentas pretendida.
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();
A tabela a seguir lista e descreve cada uma das variáveis usadas nas etapas anteriores.
| Variável | Descrição |
|---|---|
{base_url} |
O endpoint da API da cadeia URL de ferramentas. Para obter mais informações sobre os valores suportados, consulte Endpoint URL. |
{iam_api_key} |
Sua chave de API do IAM. |
{iam_token} |
Um token de portador IAM válido. |
{tool_name} |
O nome da integração da ferramenta. |
{event_notifications_tool_integration_name} |
O nome da instância do serviço “ Event Notifications ”. |
{event_notifications_service_crn} |
O Nome do Recurso na Nuvem (CRN) da instância do serviço “ Event Notifications ”. |
{toolchain_id} |
A cadeia de ferramentas na qual a integração de ferramenta será criada |
Incluindo uma integração de ferramenta com o Terraform
É possível incluir a integração da ferramenta Event Notifications em sua cadeia de ferramentas usando o Terraform.
IBM Cloud É necessária a versão do provedor 1.53.0 Terraform ou posterior para adicionar uma integração de ferramenta usando o Terraform.
-
Para instalar a interface de linha de comando (CLI) do Terraform e configurar o plug-in do provedor IBM Cloud para o Terraform, siga o tutorial disponível em Introdução ao Terraform em IBM Cloud®.
-
Crie um arquivo de configuração do Terraform que seja denominado
main.tf. Neste arquivo, adicione a configuração para criar instâncias de recursos usando a Linguagem de Configuração do HashiCorp (HCL). Para obter mais informações sobre como usar essa linguagem de configuração, consulte a Documentação do TerraformO exemplo a seguir cria uma integração de ferramenta Delivery Pipeline usando o recurso
ibm_cd_toolchain_tool_pipeline, em quetoolchain_idé um GUID que representa a cadeia de ferramentas na qual criar a integração de ferramenta.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}" } }Para obter mais informações sobre recursos de integração de ferramentas, consulte a lista completa de recursos de integração de ferramentas suportados no IBM Cloud Terraform Registry.
-
Inicialize a CLI do Terraform.
terraform init -
Crie um plano de execução do Terraform. Este plano resume as ações que devem ser executadas para criar a integração de ferramenta
terraform plan -
Aplique o plano de execução do Terraform. O Terraform toma as ações necessárias para criar a integração de ferramenta
terraform apply
A tabela a seguir lista e descreve cada uma das variáveis usadas nas etapas anteriores.
| Variável | Descrição |
|---|---|
{event_notifications_tool_integration_name} |
O nome da instância do serviço “ Event Notifications ”. |
{event_notifications_service_crn} |
O CRN da instância do serviço Event Notifications. |
{toolchain_id} |
A cadeia de ferramentas na qual a integração de ferramenta será criada |
Entregando notificações para destinos selecionados
Depois de ativar as notificações de eventos para uma cadeia de ferramentas, crie tópicos, destinos e inscrições no Event Notifications para que os alertas possam ser encaminhados e entregues para os destinos selecionados..
Para obter uma lista completa de destinos suportados, consulte a Documentação do Event Notifications.
Detalhes da carga útil de notificação
Os eventos que são gerados por cadeias de ferramentas e suas instâncias de integração de ferramentas associadas contêm vários campos que ajudam a identificar a origem e os detalhes de um evento
A API POST {toolchain_id} /toolchains//events retornará um código de status 200 para indicar que a solicitação foi processada. Isso não significa necessariamente que os eventos foram enviados com sucesso para as instâncias de serviço Event Notifications correspondentes.
Notificações de eventos integradas de cadeias de ferramentas e instâncias de integração de ferramentas contêm apenas propriedades de metadados, como nomes ou identificadores de recursos. Dados confidenciais, como chaves de API ou senhas, não são incluídos nos eventos gerados.
As notificações de eventos personalizadas do cliente contêm os dados fornecidos pelo cliente à API POST {toolchain_id} /toolchains//events. Não inclua credenciais, informações de identificação pessoal ou outras informações confidenciais em chamadas para a API.
As propriedades enviadas para Event Notifications variam de acordo com o tipo de evento. Por exemplo, se um evento do com.ibm.cloud.toolchain.pipeline:pipeline_start:1 ocorrer, a cadeia de ferramentas enviará uma carga útil de notificação
para Event Notifications que é semelhante ao exemplo a seguir.
{
"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"
}
}
}
A tabela a seguir fornece informações detalhadas sobre cada propriedade de notificação de eventos..
| Propriedade | Descrição |
|---|---|
subject |
Opcional. O objeto que representa o sujeito que iniciou o evento Esse objeto pode conter os seguintes campos:
. |
toolchain.instance |
O objeto que representa a cadeia de ferramentas na qual o evento foi originado Esse objeto contém os campos a seguir:
|
toolchain.tool-instance |
Opcional. O objeto que representa a instância da cadeia de ferramentas que participa do evento Esse objeto está presente e é aplicável apenas a eventos específicos de uma ferramenta ou integração de ferramenta. Para os subtipos toolchain_bind e toolchain_unbind, esse objeto é a instância de integração de ferramenta que está sendo ligada ou desvinculada Para eventos de pipeline, esse objeto é a instância de integração da ferramenta de pipeline na qual o evento
foi originado Esse objeto contém os seguintes campos:
|
toolchain.pipeline-run |
Opcional. O objeto que representa a execução do pipeline Tekton ou a execução do estágio do pipeline Classic em que o evento foi originado. Esse objeto está presente e é aplicável apenas a eventos de pipeline e contém os campos a seguir:
|
toolchain.external-event |
Opcional. O objeto que contém os detalhes de um evento customizado do cliente resultante da chamada da API POST /toolchains/{toolchain_id}/events.
Esse objeto está presente e é aplicável apenas a eventos sob medida do cliente Esse objeto contém os campos a seguir:
|