JiraからGitLabへのDORAインテグレーション
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLabでは、DevOpsのパフォーマンスを測定するために役立つDORAメトリクスの表示レベルを得ることができます。4つのメトリクスは次のとおりです:
- デプロイ頻度: 本番環境への1日あたりの平均デプロイ回数
- 変更のリードタイム: 本番環境へのコミットの正常な配信にかかる秒数(コードのコミットから、本番環境で正常に実行されているまで)
- 変更失敗率: 特定の期間に本番環境でインシデントを引き起こすデプロイの割合
- 平均復旧時間: 本番環境でインシデントがオープンになっていた時間の中央値
最初の2つのメトリクスはGitLab CI/CDとマージリクエストから生成されますが、後の2つはGitLabインシデントの作成に依存します。
インシデントの追跡にJiraを使用しているチームの場合、これはインシデントをリアルタイムでJiraからGitLabにレプリケートする必要があることを意味します。このプロジェクトでは、そのレプリケーションの設定について説明します。
注: 同様のインテグレーションがイシューのレプリケーションにも存在し、バリューストリーム分析のメトリクス(リードタイム、イシューの作成、およびイシューのクローズ)を生成します。VSAメトリクスのイシューレプリケーションに関心がある場合は、JiraからGitLabへのVSAインテグレーションを参照してください。
アーキテクチャ
2つの自動化ワークフローを作成する必要があります:
- Jiraで作成されたときにGitLabインシデントを作成します。
- Jiraで解決されたときにGitLabインシデントを解決します。
インシデントの作成
インシデントの解決
セットアップ
前提条件
このチュートリアルでは、以下があると仮定します:
- GitLab Ultimateライセンス
- インシデントをクローンするJiraプロジェクト
Jiraは、Jiraライセンスに応じて、自動化実行の頻度に制限を設けています。今日現在、制限は次のとおりです:
| プラン | 制限 |
|---|---|
| Free | 1か月あたり100回の実行 |
| スタンダード | 1か月あたり1700回の実行 |
| Premium | ユーザーあたり1か月あたり1000回の実行 |
| エンタープライズ | 無制限の実行 |
各インシデントの作成は1回の実行としてカウントされ、各インシデントの解決は1回の実行としてカウントされます。
GitLabアラートエンドポイント
最初に、GitLabでアラートの作成/ 解決をトリガーできるHTTPエンドポイントを作成する必要があります。これにより、インシデントが作成/ 解決されます。
- イシューを作成するGitLabプロジェクトに移動します。サイドバーから、設定 > モニタリングに移動します。アラートセクションを展開します。
- アラートで、アラート設定タブに切り替えます。次のボックスをオンにし、変更を保存をクリックします:
- インシデントを作成します。トリガーされた各アラートに対してインシデントが作成されます。
- リカバリーアラート通知がアラートを解決するときに、関連付けられたインシデントを自動的にクローズします
- アラートで、現在のインテグレーションタブに切り替えます。新しいインテグレーションを追加をクリックします。Integration type(インテグレーションタイプ)を
HTTP Endpointに設定し、名前(例:Jira incident sync)を付けて、インテグレーションを有効にするを有効に設定します。Jiraの自動化ワークフローを設定したら、アラートペイロードマッピングをカスタマイズするために戻ってきます。 - インテグレーションを保存をクリックします。「インテグレーションが正常に保存されました」というメッセージが表示されます。URLと認証キーを表示をクリックします。
- Jira自動化ワークフローとLambda関数を設定するときに、エンドポイントURLと認可キーが必要になるため、後で使用するために保存してください。
Jiraインシデント作成ワークフロー
Jiraインシデントの作成時にGitLabアラートエンドポイントを自動的にトリガーするには、Jira自動化を使用します。
インシデントが管理されているJiraプロジェクトに移動します。サイドバーから、プロジェクトの設定 > Automation(自動化)に移動します(少しスクロールダウンして見つける必要がある場合があります)。
ここから、Jiraの自動化ワークフローを管理できます。右上にあるCreate rule(ルールを作成)をクリックします。
トリガーの場合は、Issue created(作成されたイシュー)を検索して選択します。保存をクリックします。
次に、IF: Add a condition(IF: 条件を追加)を選択します。ここでは、作成されたイシューがインシデントに関連するかどうかを判断するために、チェックする条件を指定できます。このガイドでは、Issue fields condition(イシューフィールド条件)を選択します。フィールドで、サマリーを選択し、Condition(条件)をcontains(含む)に設定し、値を
incidentに設定します。保存をクリックします。トリガーと条件を設定したら、THEN: Add an action(THEN: アクションを追加)を選択します。Send web request(Webリクエストを送信)を検索して選択します。
Web request URL(WebリクエストURL)を前のセクションのGitLab WebhookのURLに設定します。
エンドポイント認証オプションについては、GitLabドキュメントを確認してください。このガイドでは、ベアラー認証ヘッダーメソッドを使用します。Jira自動化設定で、次のヘッダーを追加します:
名前 値 認可 Bearerエンドポイントauth key(認証キー)> Content-Type application/jsonAuthorizationヘッダーを「非表示」に設定することもできます。
HTTP method(HTTPメソッド)がPOSTに設定されていることを確認し、Web request body(Webリクエストの本文)をIssue data (Jira format)(イシューデータ(Jira形式))に設定します。
最後に、Save(保存)をクリックし、自動化に名前(例:
Jira incident creation)を付けて、Turn it on(オンにする)をクリックします。右上にあるReturn to list(リストに戻る)をクリックします。最後に必要なのは、Jiraペイロードの値をGitLabアラートパラメータにマップすることです。平均復旧時間メトリクスのインシデント解決も設定する場合は、今のところこのステップをスキップしてください。それ以外の場合は、Jiraペイロードの値をGitLabアラートパラメータにマップするにジャンプし、そこに記載されている手順に従ってください。
ペイロード値をマップしたら、Jiraで作成したインシデントもGitLabで作成されます。これにより、変更失敗率 DORAメトリクスが表示されます。
Jiraインシデント解決ワークフロー
上記のように別のJira自動化ワークフローを作成し、次の変更を加えます:
- トリガーをIssue transitioned(イシューの移行)に設定します。「From status」フィールドは空白のままにすることができます。「To status」(変更後のステータス)フィールドは、ワークフローに従って、インシデントが解決済みであることを示すステータスに設定します(例:
Closed、Done、Resolved、Completed)。 - 自動化に適切な名前(例:
Jira incident close)を付けます。
Jiraペイロード値をGitLabアラートパラメータにマップする
- Jira自動化ワークフローを作成したら、作成したワークフローをクリックして、Then: Send web request(THEN: Webリクエストを送信)を選択します。
- Validate your web request configuration(Webリクエスト設定を検証する)セクションを展開し、テストする解決済みイシューキーを入力します(使用できる既存のイシューキーが必要です)。検証をクリックします。
- Request POST(リクエストPOST)セクションを展開し、Payload(ペイロード)セクションを展開します。ペイロード全体をコピーします。
- GitLabプロジェクトに戻り、設定 > モニタリング > アラート > 現在のインテグレーションに移動します。以前に作成したインテグレーションの横にある「設定」アイコンをクリックし、詳細を設定タブに切り替えます。
- Customize alert payload mapping(アラートペイロードマッピングをカスタマイズする)で、ステップ3でJiraからコピーしたペイロードを貼り付けます。次に、ペイロードフィールドの解析をクリックします。
- 以下に示すようにフィールドをマップします:
GitLabアラートキー ペイロードアラートキー タイトル issue.fields.summary 説明 issue.fields.status.description 終了時間 issue.fields.resolutiondate1 モニタリングツール issue.fields.reporter.accountType 重大度 issue.fields.priority.name フィンガープリント issue.key 環境 issue.fields.project.name
1これは、インシデント解決自動化をセットアップした場合にのみ必要です。このフィールドがオプションとして表示されない場合は、上記の手順2でテストするために解決済みのイシューキーを入力したことを確認してください。
- 最後に、インテグレーションを保存をクリックします。
この時点で、Jiraで解決したインシデントもGitLabで解決されます。これにより、平均復旧時間 DORAメトリクスが表示されます。

