툴체인에 대한 이벤트 알림 활성화

Continuous Delivery 2027년 2월 12일부로 다음 지역에서 서비스가 중단될 예정입니다: au-syd, ca-tor, us-east. 또한 해당 날짜를 기점으로 Code Risk Analyzer는 모든 지역에서 서비스가 중단될 예정입니다. 특정 지역에서 해당 기능을 실제로 사용하지 않는 경우, 해당 지역의 기능은 예정보다 일찍 중단될 수 있으며 새로운 인스턴스 등록이 더 이상 허용되지 않을 수 있습니다. 자세히 알아보기

툴체인 IBM Cloud® Continuous Delivery 관리자로서, 이메일, SMS, Slack 또는 PagerDuty, 기타 지원되는 전달 채널을 사용하여 툴체인 또는 툴 통합 내 이벤트에 대한 알림을 다른 사용자나 인간 대상에게 전송할 수 있습니다. 또한, 예를 들어 웹훅을 활용한 이벤트 주도형 프로그래밍을 통해 로직을 구축하기 위해 이러한 이벤트 알림을 다른 애플리케이션으로 전송할 수도 있습니다. 이러한 접근 방식은 툴체인(toolchains)과 IBM Cloud® Event Notifications 간의 연동을 통해 가능해집니다.

Event Notifications에 정보를 전송하려면 도구 체인에 Event Notifications 도구 통합을 추가 해야 합니다. Event Notifications작업에 대한 자세한 정보는 Event Notifications 를 참조하십시오.

이제 다음을 사용하여 이벤트 알림을 배포할 수 있습니다 Event NotificationsEvent Notifications PagerDuty, 이메일, SMS, 푸시 알림, 웹훅, Microsoft® Teams, ServiceNow, 및 IBM Cloud Functions 와 같은 기타 커뮤니케이션 채널에 알림을 배포하는 데 선호되는 방법입니다.

툴체인이 이벤트를 수집하고 전송하는 방식

도구 체인 또는 지원되는 도구 통합 중 하나에서 관심있는 이벤트가 발생하면 도구 체인은 연결된 Event Notifications 인스턴스와 통신하여 지원되는 대상 으로 알림을 전달합니다.

도구 체인은 두 종류의 이벤트를 지원합니다.

  • 기본 제공 이벤트는 도구 체인 내에서 자동으로 생성됩니다. 예를 들어, 도구 통합이 도구 체인에 추가되거나 도구 체인에서 제거될 때, 파이프라인 실행이 시작될 때 및 파이프라인 실행이 완료될 때 기본 제공 이벤트가 전송됩니다. 기본 제공 이벤트의 페이로드는 도구 체인에 의해 판별되는 데이터로 구성됩니다.
  • 클라이언트 맞춤 이벤트는 POST /toolchains/{toolchain_id}/events API를 사용하여 클라이언트의 요청에 따라 도구 체인에 의해 생성됩니다. 클라이언트 맞춤형 이벤트의 페이로드는 도구 체인으로 판별되는 데이터와 클라이언트가 API에 제공하는 데이터로 구성됩니다.

Tekton 파이프라인 단계는 클라이언트 맞춤형 POST {toolchain_id} /toolchains//events API를 활용하여 단계에 관련되고 의미 있는 정보를 포함하는 사용자 정의 이벤트를 대상에 Event Notifications 전송할 수 있습니다.

Continuous Delivery에 대한 이벤트

다음 표에는 툴체인 이벤트가 나열되어 있습니다.

각 하위 유형에 추가되는 :1 문자는 주 버전 번호를 나타냅니다.

이벤트 알림을 생성하는 작업
이벤트 이름 이벤트 유형 하위 유형 설명
Client event com.ibm.cloud.toolchain.client event:1 이 클라이언트 맞춤형 이벤트는 클라이언트가 POST /toolchains/{toolchain_id}/events API를 호출할 때 전송됩니다.
Tool created com.ibm.cloud.toolchain.toolchain toolchain_bind:1 이 기본 제공 이벤트는 도구 통합이 작성되어 도구 체인에 추가될 때 전송됩니다.
Tool deleted com.ibm.cloud.toolchain.toolchain toolchain_unbind:1 이 기본 제공 이벤트는 도구 통합이 삭제되고 도구 체인에서 제거될 때 전송됩니다.
Pipeline run started com.ibm.cloud.toolchain.pipeline pipeline_start:1 이 기본 제공 이벤트는 Tekton 파이프라인 실행 또는 Classic 파이프라인 단계가 시작될 때 전송됩니다.
Pipeline run succeeded com.ibm.cloud.toolchain.pipeline pipeline_success:1 이 기본 제공 이벤트는 Tekton 파이프라인 실행 또는 클래식 파이프라인 단계가 성공적으로 완료될 때 전송됩니다.
Pipeline run failed com.ibm.cloud.toolchain.pipeline pipeline_fail:1 이 기본 제공 이벤트는 Tekton 파이프라인 실행 또는 클래식 파이프라인 단계가 실패 상태로 완료될 때 전송됩니다. 예를 들어, 이 이벤트는 배치가 시도되었지만 성공적으로 완료되지 못한 경우에 전송됩니다.
Pipeline run cancelled com.ibm.cloud.toolchain.pipeline pipeline_cancel:1 이 기본 제공 이벤트는 Tekton 파이프라인 실행 또는 클래식 파이프라인 단계가 취소될 때 전송됩니다.
Pipeline run error com.ibm.cloud.toolchain.pipeline pipeline_error:1 이 기본 제공 이벤트는 Tekton 파이프라인 실행에서 오류가 발생하여 성공적으로 완료되지 않은 경우에 전송됩니다. 이 이벤트는 기본적으로 인프라 및 구성 문제 (예: 잘못된 형식의 Tekton으로 인해 파이프라인 실행이 시작되지 않는 경우) 에 사용됩니다.

알림 사용

도구 체인 또는 연관된 도구 통합에 의해 생성되는 기본 제공 및 클라이언트 맞춤 이벤트는 동일한 계정에서 사용 가능한 Event Notifications 서비스 인스턴스로 전달될 수 있습니다.

선택한 Event Notifications 서비스 인스턴스에 해당 도구 체인이 이벤트를 전송할 수 있도록 허용하는 IAM 권한 부여 정책 이 있는지 확인하십시오. 서비스 Event Notifications 인스턴스에 대한 권한 부여에 대한 자세한 내용은 Event Notifications '인스턴스 통합 권한이 거부되는 이유는 무엇인가요? '를 참조하십시오.

콘솔에서 Event Notifications 에 연결하기

도구 체인 및 도구 통합 인스턴스에서 중요한 이벤트를 전송하도록 Event Notifications 를 구성하십시오.

  1. 이미 툴체인이 있고 여기에 이 도구 통합 기능을 추가하려는 경우, IBM Cloud 콘솔에서 메뉴 아이콘( 햄버거 아이콘 ) > 플랫폼 자동화 > 툴체인을 클릭하십시오. 도구 체인 페이지에서 도구 체인을 클릭하여 해당 개요 페이지를 여십시오.

    a. 도구 추가를 클릭하십시오.

    b. 도구 통합 섹션에서 Event Notifications을 클릭하십시오.

  2. 도구 체인의 Event Notifications 카드에 이 도구 통합에 대해 표시할 이름을 입력하십시오. 이 이름은 도구 체인에서 도구 통합을 식별하는 데 사용됩니다.

  3. 도구 체인을 연결할 Event Notifications 인스턴스를 선택하십시오.

  4. ‘통합 생성’을 클릭하여 Event Notifications 도구 통합을 도구 체인에 추가하세요.

  5. 툴체인의 ‘개요’ 페이지에서 ‘ IBM Cloud ’ 도구 카드에서 Event Notifications 을 클릭합니다.

API를 사용하여 Event Notifications에 연결

API를 사용하여 Event Notifications 도구 통합을 도구 체인에 추가할 수 있습니다.

  1. IAM 베어러 토큰을 확보하십시오. 또는 SDK를 사용하는 경우 IAM API키를 얻고 환경 변수를 사용하여 클라이언트 옵션을 설정하십시오.

    export CD_TOOLCHAIN_AUTH_TYPE=iam && \
    export CD_TOOLCHAIN_APIKEY={iam_api_key} && \
    export CD_TOOLCHAIN_URL={base_url}
    
  2. 도구 통합을 작성할 도구 체인의 ID를 찾으십시오.

  3. eventnotificationstool_type_id 로 지정하십시오.

  4. 도구 통합에 필요한 다음 tool_parameters 를 지정하십시오.

    • name: Event Notifications 도구 통합을 식별하는 데 사용되는 이름입니다.
    • instance-crn: Event Notifications 서비스 인스턴스의 클라우드 리소스 이름 (CRN) 입니다.
  5. 대상 툴체인 내에 도구 통합 기능을 추가하십시오.

    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();
    

다음 표에서는 이전 단계에서 사용된 각 변수를 나열하고 설명합니다.

API와의 도구 통합 프로비저닝을 위한 변수
가변 설명
{base_url} 툴체인 API 엔드포인트 URL. 지원되는 값에 대한 자세한 내용은 엔드포인트를 참조하십시오 URL.
{iam_api_key} IAM API 키.
{iam_token} 유효한 IAM 베어러 토큰입니다.
{tool_name} 도구 통합의 이름입니다.
{event_notifications_tool_integration_name} Event Notifications 서비스 인스턴스의 이름입니다.
{event_notifications_service_crn} Event Notifications 서비스 인스턴스의 클라우드 리소스 이름(CRN).
{toolchain_id} 도구 통합을 작성할 도구 체인입니다.

Terraform과의 도구 통합 추가

Terraform을 사용하여 도구 체인에 Event Notifications 도구 통합을 추가할 수 있습니다.

IBM Cloud Terraform 제공자 버전 1.53.0 이상이어야만 Terraform을 사용하여 도구 통합을 추가할 수 있습니다.

  1. Terraform 명령줄 인터페이스(CLI)를 설치하고 Terraform용 IBM Cloud 프로바이더 플러그인을 구성하려면, IBM Cloud® 에 있는 ‘Terraform 시작하기’ 튜토리얼을 따르십시오.

  2. 이름이 main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서 HCL( HashiCorp Configuration Language)을 사용하여 리소스 인스턴스를 생성하는 구성을 추가하십시오. 이 구성 언어 사용에 대한 자세한 정보는 Terraform 문서를 참조하십시오.

    다음 예제는 ibm_cd_toolchain_tool_pipeline 자원을 사용하여 Delivery Pipeline 도구 통합을 작성합니다. 여기서 toolchain_id 는 도구 통합을 작성할 도구 체인을 나타내는 GUID입니다.

    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}"
      }
    }
    

    도구 통합 리소스에 대한 자세한 정보는 IBM Cloud Terraform 레지스트리에서 지원되는 도구 통합 리소스의 전체 목록을 참조하십시오.

  3. Terraform CLI를 초기화하십시오.

    terraform init
    
  4. Terraform 실행 플랜을 작성하십시오. 이 계획은 도구 통합을 작성하기 위해 실행해야 하는 조치를 요약합니다.

    terraform plan
    
  5. Terraform 실행 계획을 적용합니다. Terraform은 도구 통합을 작성하는 데 필요한 조치를 수행합니다.

    terraform apply
    

다음 표에서는 이전 단계에서 사용된 각 변수를 나열하고 설명합니다.

API와의 도구 통합 프로비저닝을 위한 변수
가변 설명
{event_notifications_tool_integration_name} Event Notifications 서비스 인스턴스의 이름입니다.
{event_notifications_service_crn} Event Notifications 서비스 인스턴스의 CRN입니다.
{toolchain_id} 도구 통합을 작성할 도구 체인입니다.

선택한 대상에 알림 전달

도구 체인에 대한 이벤트 알림을 사용으로 설정한 후에는 Event Notifications 에서 토픽, 목적지등록 을 작성하여 선택된 목적지로 경보를 전달하고 전달할 수 있도록 하십시오.

지원되는 대상의 전체 목록은 Event Notifications 문서를 참조하십시오.

알림 페이로드 세부사항

도구 체인 및 연관된 도구 통합 인스턴스에 의해 생성되는 이벤트에는 이벤트의 소스 및 세부사항을 식별하는 데 도움이 되는 다양한 필드가 포함되어 있습니다.

POST {toolchain_id} /toolchains//events API는 요청이 처리되었음을 나타내기 위해 200 상태 코드를 반환합니다. 이는 해당 이벤트가 반드시 해당 Event Notifications 서비스 인스턴스로 성공적으로 전송되었음을 의미하지는 않습니다.

도구 체인 및 도구 통합 인스턴스의 기본 제공 이벤트 알림에는 자원의 이름 또는 ID와 같은 메타데이터 특성만 포함됩니다. API 키나 비밀번호와 같은 민감한 데이터는 생성된 이벤트에 포함되지 않습니다.

클라이언트 맞춤형 이벤트 알림에는 클라이언트가 POST {toolchain_id} /toolchains//events API에 제공한 데이터가 포함됩니다. API에 대한 호출에 신임 정보, 개인 식별 정보 또는 기타 민감한 정보를 포함하지 마십시오.

Event Notifications 로 전송되는 속성은 이벤트 유형에 따라 다릅니다. 예를 들어, com.ibm.cloud.toolchain.pipeline:pipeline_start:1 이벤트가 발생하는 경우 도구 체인은 다음 예제와 유사한 알림 페이로드를 Event Notifications 에 전송합니다.

{
   "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"
      }
   }
}

다음 표에서는 각 이벤트 알림 특성에 대한 자세한 정보를 제공합니다.

이벤트 알림 페이로드의 속성
특성 설명
subject 선택사항입니다. 이벤트를 시작한 주제를 나타내는 오브젝트입니다. 이 오브젝트에는 다음 필드가 포함될 수 있습니다.

name: 주제의 이름.

email: 제목의 이메일입니다.

iam_id: 주제의 IAM ID입니다.

toolchain.instance 이벤트가 시작된 도구 체인을 나타내는 오브젝트입니다. 이 오브젝트에는 다음 필드가 포함되어 있습니다.

crn: 도구 체인의 CRN.

id: 도구 체인의 ID.

resource_group_id: 도구 체인의 리소스 그룹 ID입니다.

name: 도구 체인의 이름입니다.

href: 도구 체인의 공용 API 엔드포인트.

ui_href: 도구 체인의 UI 엔드포인트입니다.

toolchain.tool-instance 선택사항입니다. 이벤트에 참여하는 도구 체인 인스턴스를 나타내는 오브젝트입니다. 이 오브젝트는 도구 또는 도구 통합에 특정한 이벤트에만 존재하고 적용 가능합니다. toolchain_bindtoolchain_unbind 하위 유형의 경우 이 오브젝트는 바인드 또는 바인드 해제 중인 도구 통합 인스턴스입니다. 파이프라인 이벤트의 경우 이 오브젝트는 이벤트가 시작된 파이프라인 도구 통합 인스턴스입니다. 이 오브젝트에는 다음 필드가 포함되어 있습니다.

id: 도구 통합 인스턴스의 ID.

tool_type_id: 도구 유형.

href 의 ID: 도구 통합 인스턴스의 공용 API 엔드포인트.

state: 도구 통합 인스턴스의 상태입니다.

referent: 도구 통합 인스턴스가 표시하는 도구에 대한 정보를 포함하는 오브젝트입니다. 예를 들어, ui_href 는 도구 통합 인스턴스로 표시되는 도구 통합의 UI 엔드포인트입니다.

name: 선택사항입니다. 도구 통합 인스턴스의 이름입니다.

toolchain.pipeline-run 선택사항입니다. 이벤트가 시작된 Tekton 파이프라인 실행 또는 클래식 파이프라인 단계 실행을 나타내는 오브젝트입니다. 이 오브젝트는 파이프라인 이벤트에만 존재하고 적용 가능하며 다음 필드를 포함합니다.

id: Tekton 파이프라인 실행 또는 클래식 파이프라인 단계의 ID.

ui_href: Tekton 파이프라인의 UI 엔드포인트가 실행되거나 클래식 파이프라인 단계입니다.

run_number: 선택사항입니다. Tekton 파이프라인 실행 또는 Classic 파이프라인 단계의 실행 번호입니다.

start_time: 선택사항입니다. 실행이 시작된 시간입니다 (ISO 8601형식).

finish_time: 선택사항입니다. 실행이 완료된 시간입니다 (ISO 8601형식).

duration: 선택사항입니다. ISO 8601형식의 실행 지속 기간입니다.

trigger: 선택사항입니다. Tekton 파이프라인을 실행한 트리거에 대한 정보를 포함하는 오브젝트입니다. 예를 들어, Tekton 파이프라인 트리거의 이름인 name 입니다.

toolchain.external-event 선택사항입니다. POST /toolchains/{toolchain_id}/events API의 호출로 인한 클라이언트 맞춤 이벤트의 세부사항을 포함하는 오브젝트입니다. 이 오브젝트는 클라이언트 맞춤형 이벤트에만 존재하고 적용 가능합니다. 이 오브젝트에는 다음 필드가 포함되어 있습니다.

id: POST /toolchains/{toolchain_id}/events API

title 에서 생성된 클라이언트 맞춤형 이벤트의 ID입니다. POST /toolchains/{toolchain_id}/events API에 대한 요청 페이로드의 title 필드 값.

description: POST /toolchains/{toolchain_id}/events API에 대한 요청 페이로드의 description 필드 값.

data: 선택사항입니다. 이 필드의 존재 여부 및 값은 POST /toolchains/{toolchain_id}/events API에 제출된 요청 페이로드에 따라 다릅니다. API에 대한 요청에 content_typetext/plain 이 지정되어 있으면 요청 페이로드의 data 필드에 문자열 데이터가 포함된 data.text_plain.content 필드 값이 존재합니다. API 요청에 content_typeapplication/json 이 지정되어 있으면 요청 페이로드의 data 필드에 JSON 데이터가 포함된 data.application_json.content 필드 값이 존재합니다. JSON 데이터는 최대 깊이 5로 제한된다는 점에 유의하세요. API에 대한 요청이 nonecontent_type 를 지정하는 경우 data 필드가 생략됩니다.