DOCS
インテグレーションガイド / Bitbucket

Bitbucket

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをそのまま日本語に翻訳したものです。日本語環境での動作を保証するわけではありません。原文はこちらを参照してください。

本記事は米国PagerDuty社のサイトで公開されているものを日本語訳したものです。原文はこちらです。

Bitbucketは、プロチームのためのGitソリューションです。 Bitbucketのコア機能には、プルリクエスト、分岐権限、インラインコメントなどがあります。 PagerDutyのBitbucketとの統合により、Bitbucketパイプライン内の障害についてオンコールしているエンジニアに通知することができます。

注:この統合はBitbucket cloud向けです。

PagerDutyでの設定

PagerDutyアカウント内で Custom Event Transformer を作成する必要があります。 これにより、PagerDutyはあなたのBitbucketアカウントからwebhookを処理できます。 Bitbucketの各リポジトリは、異なるPagerDutyサービスに失敗情報を送信できます。 統合するBitbucketリポジトリとPagerDutyサービスを決定します。

  1. ConfigurationからServices に移動します。
  2. 統合するPagerDutyサービスを選択してから、Integrationsタブに移動します
  3. New Integration を押します。 Add an Integration 画面が表示されます
  4. インテグレーションに “Bitbucket”のようなタイトルを付けてください ** Integration Type**ドロップダウンから Custom Event Transformer を選択し、Add Integration を押します。
  5. Integrations タブに戻り、新しく追加された統合が表示されます。 新しく追加した統合の歯車アイコンをクリックし、Edit を選択します。 Bitbucket
  6. Edit Integration 画面では、Bitbucketから来るweebhookを処理するためのJavascriptを入力することができます。下記のEvent Transformer JavaScriptスニペットを貼り付けます。
var body = webhook.body || JSON.parse(webhook.rawBody);
var emit_event = false;
var event_type;

if(body.commit_status.state == "INPROGRESS") {
  event_type = PD.Trigger;
  emit_event = false;
}
if(body.commit_status.state == "FAILED") {
  event_type = PD.Trigger;
  emit_event = true;
}
if(body.commit_status.state == "SUCCESSFUL") {
  event_type = PD.Resolve;
  emit_event = true;
}

delete body.commit_status.repository_links;
delete body.commit_status.links;
delete body.commit_status.commit.author.user;

var normalized_event = {
  event_type: event_type,
  incident_key: body.commit_status.commit.hash,
  description: "Failed " + body.commit_status.type + ": " + body.commit_status.name + " | " + body.commit_status.repository.full_name,
  details: body.commit_status,
  client: "View in Bitbucket",
  client_url: body.commit_status.url
};

if (emit_event) {
  PD.emitGenericEvents([normalized_event]);
}
  1. Save Changes ボタンを押して設定を保存します。 Bitbucket統合の設定を示す画面が表示されます。Bitbucket2
  2. この画面で、Integration URL 値を選んでコピーします。 これはBitbucketアカウントにwebhookを設定する場合に必要になります。

Bitbucketでの設定

残りの設定は、Bitbucketのユーザーインターフェースを通じて、Bitbucket側で設定します。 失敗した時の情報をPagerDutyに送信するwebhookを追加します。

  1. PagerDutyと統合するリポジトリを開きます。 左側のナビゲーションから Settings を開きます。
  2. サブセクション ”Workflow” の Webhooks をクリックし、続いて Add Webhook をクリックします。
  3. タイトルを入力し、上の手順でコピーしたPagerDuty URLを貼り付けます。
  4. Triggers ラジオ・オプションを Choose from a full list of triggers に変更します。
  5. Repository で、Build status updated を選択します。 Bitbucket3
  6. 設定をSaveします。

統合のセットアップが正常に完了しました。 あなたのパイプラインに障害が発生した場合、PagerDutyの事件は、オンコールの対応者に通知します。 障害が回復すると、SUCCESSFULメッセージがPagerDutyに送信され、PagerDutyインシデントが自動的に解決されます。