ツールチェーンのイベント通知を有効にする
Continuous Delivery 2027年2月12日をもって、以下の地域において提供が終了します: au-syd、 ca-tor、 us-east。 また、同日をもって、Code Risk Analyzerもすべての地域で提供を終了いたします。 あるリージョンでこれらの機能が実際に利用されていない場合、そのリージョンの機能は早期に提供が終了し、新しいインスタンスの受け入れが停止される可能性があります。 詳細はこちら
ツール IBM Cloud® Continuous Delivery チェーンの管理者として、ツールチェーンやツール統合におけるイベントの通知を、メール、SMS、Slack、 PagerDuty, その他のサポートされている配信チャネルを使用して、他のユーザーや人間宛先に送信したい場合があります。 また、たとえばWebhookなどを利用したイベント駆動型プログラミングを用いてロジックを構築するために、こうしたイベント通知を他のアプリケーションに送信することも考えられます。 このアプローチは、ツールチェーンと IBM Cloud® Event Notifications との連携によって実現されています。
Event Notificationsに情報を送信するには、ツールチェーンに Event Notifications ツール統合を追加 する必要があります。 Event Notificationsの操作について詳しくは、 Getting started with Event Notifications を参照してください。
を使用してイベント通知を配信できるようになりました。 Event NotificationsEvent Notifications は、Slack や、 PagerDuty, メール、SMS、プッシュ通知、ウェブフック、 Microsoft® Teams、 ServiceNow,、 IBM Cloud Functions などの通信チャネルに通知を配信するのに適した方法です。
ツールチェーンによるイベントの収集および送信の仕組み
関心のあるイベントがツールチェーンまたはサポートされているツール統合のいずれかで発生した場合、そのツールチェーンは、接続されている Event Notifications インスタンスと通信して、 サポートされている宛先 に通知を転送します。
ツールチェーンは、以下の 2 種類のイベントをサポートします。
- 組み込みイベントは、ツールチェーン内で自動的に生成されます。 例えば、ツール統合がツールチェーンに追加またはツールチェーンから削除されたとき、パイプラインの実行が開始されたとき、およびパイプラインの実行が終了したときに、組み込みイベントが送信されます。 組み込みイベントのペイロードは、ツールチェーンによって決定されるデータで構成されます。
- クライアント・カスタム・イベントは、 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 パイプライン実行またはクラシック・パイプライン・ステージのいずれかが開始されたときに送信されます。 |
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 コンソールから、 メニュー アイコン(
) > [Platform Automation ] > [Toolchains ] の順にクリックしてください。 「ツールチェーン」ページで、ツールチェーンをクリックしてその「概要」ページを開きます。
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 を検索 します。
-
tool_type_idとしてeventnotificationsを指定します。 -
ツール統合に必要な以下の
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 プロバイダープラグインを設定するには、 Terraform の使い始め IBM Cloud® のチュートリアルに従ってください。
-
main.tfという名前の Terraform 構成ファイルを作成します。 このファイルに、 HashiCorp 構成言語(HCL)を使用してリソースインスタンスを作成するための設定を追加してください。 この構成言語の使用について詳しくは、 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"
}
}
}
以下の表に、各イベント通知プロパティーに関する詳細情報を示します。
| プロパティー (Property) | 説明 |
|---|---|
subject |
オプション。 イベントを開始したサブジェクトを表すオブジェクトです。 このオブジェクトには、以下のフィールドが含まれている可能性があります。
|
toolchain.instance |
イベントの発生元であるツールチェーンを表すオブジェクト。 このオブジェクトには、以下のフィールドが含まれます。
|
toolchain.tool-instance |
オプション。 イベントに関与しているツールチェーン・インスタンスを表すオブジェクト。 このオブジェクトは存在し、ツールまたはツール統合に固有のイベントにのみ適用されます。 toolchain_bind サブタイプおよび toolchain_unbind サブタイプの場合、このオブジェクトは、バインドまたはアンバインドされるツール統合インスタンスです。 パイプライン・イベントの場合、このオブジェクトは、イベントが発生したパイプライン・ツール統合インスタンスです。
このオブジェクトには、以下のフィールドが含まれています。
|
toolchain.pipeline-run |
オプション。 イベントが発生した Tekton パイプライン実行またはクラシック・パイプライン・ステージ実行を表すオブジェクト。 このオブジェクトは存在し、パイプライン・イベントにのみ適用されます。以下のフィールドが含まれています。
|
toolchain.external-event |
オプション。 POST /toolchains/{toolchain_id}/events API の呼び出しによって生成されたクライアント・カスタム・イベントの詳細を格納するオブジェクト。 このオブジェクトは存在し、クライアント特注イベントにのみ適用されます。
このオブジェクトには、以下のフィールドが含まれています。
|