툴체인에 대한 이벤트 알림 활성화
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 를 구성하십시오.
-
이미 툴체인이 있고 여기에 이 도구 통합 기능을 추가하려는 경우, IBM Cloud 콘솔에서 메뉴 아이콘(
) > 플랫폼 자동화 > 툴체인을 클릭하십시오. 도구 체인 페이지에서 도구 체인을 클릭하여 해당 개요 페이지를 여십시오.
a. 도구 추가를 클릭하십시오.
b. 도구 통합 섹션에서 Event Notifications을 클릭하십시오.
-
도구 체인의 Event Notifications 카드에 이 도구 통합에 대해 표시할 이름을 입력하십시오. 이 이름은 도구 체인에서 도구 통합을 식별하는 데 사용됩니다.
-
도구 체인을 연결할 Event Notifications 인스턴스를 선택하십시오.
-
‘통합 생성’을 클릭하여 Event Notifications 도구 통합을 도구 체인에 추가하세요.
-
툴체인의 ‘개요’ 페이지에서 ‘ IBM Cloud ’ 도구 카드에서 Event Notifications 을 클릭합니다.
API를 사용하여 Event Notifications에 연결
API를 사용하여 Event Notifications 도구 통합을 도구 체인에 추가할 수 있습니다.
-
IAM 베어러 토큰을 확보하십시오. 또는 SDK를 사용하는 경우 IAM API키를 얻고 환경 변수를 사용하여 클라이언트 옵션을 설정하십시오.
export CD_TOOLCHAIN_AUTH_TYPE=iam && \ export CD_TOOLCHAIN_APIKEY={iam_api_key} && \ export CD_TOOLCHAIN_URL={base_url} -
도구 통합을 작성할 도구 체인의 ID를 찾으십시오.
-
eventnotifications를tool_type_id로 지정하십시오. -
도구 통합에 필요한 다음
tool_parameters를 지정하십시오.name: Event Notifications 도구 통합을 식별하는 데 사용되는 이름입니다.instance-crn: Event Notifications 서비스 인스턴스의 클라우드 리소스 이름 (CRN) 입니다.
-
대상 툴체인 내에 도구 통합 기능을 추가하십시오.
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();
다음 표에서는 이전 단계에서 사용된 각 변수를 나열하고 설명합니다.
| 가변 | 설명 |
|---|---|
{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을 사용하여 도구 통합을 추가할 수 있습니다.
-
Terraform 명령줄 인터페이스(CLI)를 설치하고 Terraform용 IBM Cloud 프로바이더 플러그인을 구성하려면, IBM Cloud® 에 있는 ‘Terraform 시작하기’ 튜토리얼을 따르십시오.
-
이름이
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 레지스트리에서 지원되는 도구 통합 리소스의 전체 목록을 참조하십시오.
-
Terraform CLI를 초기화하십시오.
terraform init -
Terraform 실행 플랜을 작성하십시오. 이 계획은 도구 통합을 작성하기 위해 실행해야 하는 조치를 요약합니다.
terraform plan -
Terraform 실행 계획을 적용합니다. Terraform은 도구 통합을 작성하는 데 필요한 조치를 수행합니다.
terraform apply
다음 표에서는 이전 단계에서 사용된 각 변수를 나열하고 설명합니다.
| 가변 | 설명 |
|---|---|
{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 |
선택사항입니다. 이벤트를 시작한 주제를 나타내는 오브젝트입니다. 이 오브젝트에는 다음 필드가 포함될 수 있습니다.
|
toolchain.instance |
이벤트가 시작된 도구 체인을 나타내는 오브젝트입니다. 이 오브젝트에는 다음 필드가 포함되어 있습니다.
|
toolchain.tool-instance |
선택사항입니다. 이벤트에 참여하는 도구 체인 인스턴스를 나타내는 오브젝트입니다. 이 오브젝트는 도구 또는 도구 통합에 특정한 이벤트에만 존재하고 적용 가능합니다. toolchain_bind 및 toolchain_unbind 하위 유형의 경우 이 오브젝트는 바인드 또는 바인드 해제 중인 도구 통합 인스턴스입니다. 파이프라인 이벤트의 경우 이 오브젝트는 이벤트가 시작된 파이프라인
도구 통합 인스턴스입니다. 이 오브젝트에는 다음 필드가 포함되어 있습니다.
|
toolchain.pipeline-run |
선택사항입니다. 이벤트가 시작된 Tekton 파이프라인 실행 또는 클래식 파이프라인 단계 실행을 나타내는 오브젝트입니다. 이 오브젝트는 파이프라인 이벤트에만 존재하고 적용 가능하며 다음 필드를 포함합니다.
|
toolchain.external-event |
선택사항입니다. POST /toolchains/{toolchain_id}/events API의 호출로 인한 클라이언트 맞춤 이벤트의 세부사항을 포함하는 오브젝트입니다. 이 오브젝트는 클라이언트 맞춤형 이벤트에만 존재하고 적용 가능합니다.
이 오브젝트에는 다음 필드가 포함되어 있습니다.
|