Slack と Bitbucket Server を併用する

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

On this page:

どのように Bitbucket Server for Slack アプリを Bitbucket にインストールするのですか?

Bitbucket Server for Slack アプリをインストールするには、以下を実行します。

  1. 管理者として Bitbucket インスタンスにログインします。

  2. 管理メニューをクリックして [アドオン] を選択します。[アドオンの管理] 画面が読み込まれます。

  3. ページ左側から [新しいアプリの検索] または [新しいアドオンの検索] をクリックします。

  4. 検索で Bitbucket Server for Slack (公式) を探します。検索結果には、Bitbucket インスタンスと互換性のあるアプリ バージョンが含まれます。

  5. [インストール] をクリックして、アプリをダウンロードしてインストールします。

  6. 設定が完了しました! [インストールしたので準備する] ダイアログで [閉じる] をクリックします。

インスタンスと互換性のある以前の Bitbucket Server for Slack (公式) バージョンを検索するには、バージョン履歴ページを参照してください。

どのように Bitbucket Server for Slack アプリを Bitbucket サイトに設定して接続するのですか?

Slack を使用するには、Bitbucket インスタンスに安全な接続 (HTTPS) によってインターネット経由でアクセスできる必要があります。したがって、セキュリティで保護されたポートを開いて、サーバーに有効な証明書があることを確認する必要があります。

このオプションでない場合でも、Bitbucket から Slack への通知を提供するカスタム Slack アプリを作成して、Slack との制限付きの接続を設定できます。アプリの作成方法については、以下のページをご覧ください。

Bitbucket 管理者の場合

Bitbucket Server の管理領域には、[アドオン] の下に Slack 統合ナビゲーション アイテムが表示されます。

  1. [Slack 統合] に移動して [Connect Slack Team] を選択します。

  2. [Slack に移動] をクリックします。

  3. Slack アプリの緑色の [インストール] ボタンをクリックして、Slack の OAuth プロセスを完了します。

Slack での OAuth プロセスを完了すると、連携用の設定ページが新しく表示されます。

  1. 下部にスクロールして、入力が必要な 2 つのフィールドを確認します。

  2. Bitbucket Server のベース URL を追加します。


Web アドレスの末尾に   を含めないでください。Web アドレスが HTTPS プロトコルで保護されて、インターネットからアクセス可能であることを確認してください。


      3. 2. のボックスのコンテンツを Bitbucket セットアップにコピーします。

       4. Bitbucket Server で、Slack 認証情報を Bitbucket 設定にペーストして [保存] をクリックします

       5. Slack ウィンドウで [送信] をクリックします

接続がセット アップされると、設定に成功した旨を示す Bitbucket Server からの通知が Slackbot とのダイレクト メッセージで送信されます。

どのように Slack に通知を投稿するためのリポジトリを構成しますか?

Bitbucket 管理者の場合

Bitbucket Server の管理領域には、[アドオン] の下に Slack 統合ナビゲーション アイテムが表示されます。

Slack 情報 (非公開または公開) にアクセスするには、以下の手順を実行して Slack アカウントを確認する必要があります。

  1. 確認リンクをクリックすると、Slack の認証フローが表示されます。

  2. アプリケーションがチャンネルにアクセスすることを許可します。

  3. Bitbucket リポジトリを別の Slack チャンネルに接続します。

これで、チャンネル ピッカーや、アクセス権がある公開チャンネルと非公開チャンネルで「Slack に [Your Name] としてアクセスしています」と表示されるようになります。

      4. リポジトリとチャンネルを選択して、[追加] をクリックします。

これで、設定テーブルに Slack への新しい接続が表示されるようになります。また、Slack では、Bitbucket 通知がセットアップされた旨を示す通知がチャンネルに送信されます。

設定セクションから、プル リクエスト、リポジトリ、コミット、コミット イベントをサブスクライブするかサブスクライブ解除することで、チャンネルに送信する通知を正確に絞り込めます。

リポジトリ管理者の場合

リポジトリ管理者は、自身の Slack 通知をセットアップして設定できます。

Bitbucket Server リポジトリ設定領域には、[ワークフロー] の下に Slack 統合ナビゲーション アイテムが表示されます。

Slack 情報 (非公開または公開) にアクセスするには、以下の手順を実行して Slack アカウントを確認する必要があります。

  1. 確認リンクをクリックすると、Slack の認証フローが表示されます。

  2. アプリケーションがチャンネルにアクセスすることを許可します。

  3. Bitbucket リポジトリを別の Slack チャンネルに接続します。

これで、チャンネル ピッカーや、アクセス権がある公開チャンネルと非公開チャンネルで「Slack に [Your Name] としてアクセスしています」と表示されるようになります。

リポジトリ管理者はこのページから、対象のリポジトリで現在接続されている Slack チャンネルを確認したり、新しい接続をセットアップしたりできます。

プライベート チャンネルへの接続方法

管理ページでアカウントを確認したら、「Slack に [Your Name] としてアクセスしています」というメッセージが表示されて、チャンネル ピッカーから公開チャンネルと非公開チャンネルを選択できるようになるはずです。

どのように個人通知を設定しますか?

統合によって、bot からのダイレクト メッセージを介して Slack で特定の個人通知を受信できます。

  1. Bitbucket ユーザー プロファイル ページに移動します。
  2. [アカウントの管理] > [Slack 通知] の順にクリックします。
  3. 次のページで、通知を受信するタイミングと希望する Slack ワークスペースに関するオプションを選択します。

どのように Bitbucket Server をダイレクト メッセージやマルチパーティ ダイレクト メッセージに接続しますか?

Bitbucket Server の通知は、Slack のダイレクト メッセージやマルチパーティ ダイレクト メッセージにセットアップできません。
代わりに、プライベート チャンネルをセットアップして通知をそこに転送するように設定することをお勧めします。

どのように複数の Slack ワークスペースへ接続しますか?

Bitbucket Server for Slack アプリは複数の Slack ワークスペースに接続できます。Slack Enterprise Grid を使用しているなどの場合に最適です。

  1. Bitbucket のグローバル管理 Slack ページの上部で、[ワークスペース セレクター] メニューを選択します。

  2. [新しいチームに接続] を選択します

  3. 以下の手順に従って、新しいワークスペースをこの Bitbucket Server インスタンスに接続します。

複数の Bitbucket Server インスタンスを使用しているかインスタンスがファイアウォールで保護されている場合は、どのように Slack に接続しますか?

追加の Bitbucket Server インスタンスを Slack に接続するには、セットアップで手動設定が必要です。Bitbucket Server インスタンスと Slack の間に適切な接続を確立するには、以降の手順に正確に従う必要があります。接続する追加の各 Bitbucket Server インスタンスに対して、以降のプロセスを繰り返します。

ステップ 1: アプリを作成

始めるには、まず https://api.slack.com/apps?new_classic_app=1 をご確認ください。Slack では、現時点でこのアプリと互換性のない新しい権限モデルがリリースされているため、クラシック スコープでアプリを作成するようにしてください。

ステップ 2: インタラクティブ コンポーネントを有効化

Bitbucket インスタンスがファイアウォールで保護されている場合は Slack はアクセスできないので、このセクションをスキップできます。

  1. アプリの設定で、[機能] > [インタラクティブ コンポーネント] の順に移動します。

  2. トグル ボタンをクリックしてインタラクティブ機能をオンにします。

  3. リクエスト URL (https://{{url}}/rest/slack/latest/action) を設定して、{{url}}Bitbucket Server インスタンス ベース URL (例: bitbucket-demo.company.com ) と置き換えます。

  4. 変更を保存します

ステップ 3: スラッシュ コマンドを作成

Bitbucket インスタンスがファイアウォールで保護されている場合は Slack はアクセスできないので、このセクションをスキップできます。

スラッシュ コマンドを使用すると、ユーザーは Slack のメッセージ ボックスからアプリとのインタラクションを直接トリガーできます。

  1. アプリの設定で [スラッシュ コマンド] に移動します。

  2. [新しいコマンドを作成] をクリックします。

  3. このコマンドの詳細をコピーして{{url}} を Bitbucket Server の URL:
    コマンド名: /bitbucket_server
    リクエスト URL: https://{{url}}/rest/slack/latest/command
    使用法のヒント: account, help
    に置き換えます。

    コマンド名が、ワークスペース内の別の Slack アプリで使用されていないことを確認します。

    保存すると、新しいスラッシュ コマンドが一覧に表示されます。

ステップ 4: OAuth と権限をセットアップ

すべての必要なスコープと権限をセットアップするには、次の手順を実行します。

  1. [機能] > [OAuth と権限] の順に移動します。

  2. [新しいリダイレクト URL を追加] をクリックします。

  3. これを https://{{url}}/rest/slack/latest/oauth に設定して、{{url}} を Bitbucket Server の URL に置き換えます。

  4. [URL を保存] をクリックします。

  5. 次に、[スコープ] セクションにスクロールして、次のスコープを追加します。

channels:read

channels:write

links:read

groups:read

groups:write

links:write

im:read

mpim:read

chat:write:bot

     6. すべてのスコープを追加したことを再確認したら、[保存] をクリックします。

bot はこれらのスコープがすべて設定されている場合にのみ、適切に動作します。bot の動作であとから問題があった場合は、すべての必要な権限が設定されているかどうかをここで確認します。

ステップ 5: bot ユーザーを追加

  1. 機能 ナビゲーション バーで、[Bot ユーザー] > [Bot ユーザーを追加] の順にクリックします。

  2. 表示名とデフォルトのユーザー名には任意の値を設定します (例: 本番環境の Bitbucket)。

  3. [Bot ユーザーを追加] をクリックします。

ステップ 6: イベント サブスクリプションをサブスクライブ

Bitbucket インスタンスがファイアウォールで保護されている場合は Slack はアクセスできないので、このセクションをスキップできます。

  1. ナビゲーション バーで [イベント サブスクリプション] に移動します。

  2. イベントを有効化トグル ボタンをクリックします。

  3. リクエスト URL https://{{url}}/rest/slack/latest/event. を追加します。

  4. [変更] をクリックします。

[認証済み] と表示されて、Slack と Bitbucket Server インスタンスの間の接続が確立されていることを確認します。

これで、[ワークスペース イベント] で次のイベントをサブスクライブできます。

app_uninstalled

channel_archive

channel_deleted

channel_unarchive

group_archive

group_deleted

group_unarchive

link_shared

tokens_revoked


[Bot イベント] にスクロールすると、次のイベントを追加できます。

member_joined_channel

message.channels

message.groups

message.im

message.mpim

 

すべてのイベントが追加されていることを確認してください。bot の動作であとから問題があった場合は、すべての必要なイベントが追加されているかどうかをここで確認します。

4. [アプリ展開ドメイン] までスクロールして、Bitbucket Server ドメインを追加します。

5. [変更を保存] をクリックして、このセクションを終了します。

ステップ 7: アプリをインストール

これで、アプリを Slack ワークスペースにインストールできます。

  1. ナビゲーション バーで、[設定] > [アプリをインストール] の順に移動します。

  2. [アプリをワークスペースにインストール] をクリックします。

3. Bitbucket 設定画面の [ワークスペース セレクター] メニューから、[新しいチームに接続] を選択します。

4. [詳細設定] 接続タイプを選択します。

この画面で、Slack アプリのそれぞれの設定をコピーする必要があります。

この手順を完了すると、Bitbucket Server 統合を利用できるようになります。

Bitbucket インスタンスを複数のワークスペースに接続するために作成した Slack アプリを配布できますか?

上記の手順に従ってカスタム アプリを作成した場合は可能です。

まず、インスタンスには、アプリの認証情報を使用するワークスペースとの接続が 1 つ以上必要です。これが必要なのは、統合がアプリのクライアントとシークレットを認識するためです。

次に、Slack でインストール URL を見つけます。

  1. アプリを Slack API ページで探します。
  2. [設定] から [配布を管理] に移動します。
  3. 他のワークスペースで配布を有効化します。そのためには、Slack の要件を満たす必要があります。
  4. 共有可能な URL をコピーします。
  5. ブラウザで共有可能な URL に移動します。それによって、インストール フローがトリガーされます。 
  6. ターゲット ワークスペースを選択して続行します。
  7. この時点で、アプリと統合が正しくセットアップされている場合は、Bitbucket の統合設定ページにリダイレクトされて新しい接続はすでにセットアップされているはずです。

Data Center 製品での連携の使用可否について

はい、この統合は Bitbucket Data Center と完璧な互換性があります。

Bitbucket Server 統合でサポートされるスラッシュ コマンドはどれですか?  

統合とのやり取りでは、以下のスラッシュ コマンドを使用できます。

スラッシュ コマンド操作
/bitbucket_server help

スラッシュ コマンドのヘルプ情報を表示します。

/bitbucket_server accountBitbucket アカウントを Slack アカウントに接続している場合は、Bitbucket アカウントが表示されます。Slack で課題にアクセスしたり Bitbucket でチャンネルを設定したりする場合は、アカウントを接続する必要があります。

どのように統合を微調整できますか?

次の表に示すように、統合の特定の部分を調整できるさまざまなシステム プロパティを使用できます。

システム プロパティ名説明 プラグインのデフォルト値
slack.client.max.channel.bulk.load管理ページで使用される、一度に取得される Slack チャンネルの最大数。どのように Slack のレートが統合を制限するかに影響します。50
slack.client.list.all.conversations

有効にすると、設定ページのチャンネル セレクターのドロップダウンに、ユーザー チャンネルではなく選択したワークスペースのすべての Slack チャンネルが表示されます。

(warning) これを大規模なワークスペースでは使用しないようにしてください、小規模なワークスペースには便利です。

false
slack.client.pagination.limit

slack.client.list.all.conversations が有効な場合は、ロードするチャンネルの最大数です。各ページには 1,000 チャンネルがロードされるため、ページネーション制限が 2 の場合は最大チャンネル数は 2000 になります。

(warning) この値を大きくしすぎるとブラウザが何度もエントリをレンダリングしようとするため、動作が遅くなるかクラッシュします。

2



slack.client.retry.on.connection.failure接続の確立に失敗した場合に再試行する OkHttp3 ブール型フラグ。製品ドキュメントtrue
slack.client.connect.timeout新しい接続を確立する際の OkHttp3 タイムアウト (ミリ秒)。製品ドキュメント3000
slack.client.read.timeoutデータの接続を待機している間の OkHttp 3 タイムアウト (ミリ秒)。製品ドキュメント10000
slack.client.retry.countSlack クライアントに 5xx レスポンスが返された場合に再試行する回数。バックオフ遅延 (秒) はそれぞれ、1、3、5、8、13、30 秒です。3
slack.client.rate.limit.retry.countSlack から 429 HTTP レスポンスが返された場合に、Slack クライアントが再試行する回数。製品ドキュメント。デフォルトで、Slack は Retry-After ヘッダーを、クライアントが次の試行を遅らせるために使用する時間間隔で返します。3
slack.client.thread.pool.sizeSlack 通知を処理するスレッドの数と、Slack からの受信リクエストの処理能力など、統合のその他の非同期操作にも影響します。5
slack.client.queue.size

統合によって消費されるメモリを制限します。たとえば、イベントの大きなスパイクによって一度に多数の通知がトリガーされてキューの最大サイズに達すると、新しい通知をスケジュールする試行は失敗してそれらの通知が削除されます。

デフォルト値が 1000 の場合は、処理するキューに変更を加えることなく、基本的に同様に発生する 1001 以上のイベントが必要となることにご注意ください。そのコンテキストで Slack 通知が有効になっている場合は、大規模な一括編集を行うとその制限に達する可能性があります。

1000
slack.client.cache.expire.secondsSlack リクエストからキャッシュされた値 (チャンネルやユーザー名など) が失効するまでの時間 (秒)。値は Slack トークンに従ってキャッシュされるため、すべての値はそれぞれの Slack ユーザーに制限されます。900 (15 分)
slack.notification.max.watchers
イベント時に通知するプル リクエスト ウォッチャーの最大数です。レート制限に影響する可能性があります。30
slack.addon.unfurl.file.max.linesSlack で展開される最大行数です。5

クラスタ環境の場合は、システム プロパティの一部とこれらのプロパティが表す上限がノードに個別に影響します。そのため、キュー サイズなどの制限は、クラスタで使用可能なノードの数に応じて拡張されます。

どのように統合をトラブルシューティングできますか?

デバッグ ロギング

次のパッケージを使用して、設定から DEBUG レベル ログを有効にできます。

  • com.atlassian.plugins.slack
  • com.atlassian.bitbucket.plugins.slack

Slack からの接続

インスタンスと Slack の間の接続に問題がある場合は、以下を再確認してください。

  • Slack は、HTTPS でセキュリティ保護された URL を介してインスタンスに到達できる。
  • Slack アプリの設定で、末尾にスラッシュを付けずにベース URL を適切に保存している。
  • <baseUrl>/rest/slack/latest/* パスがファイアウォールでホワイトリストに登録されて、セキュリティ フィルターが適用されていることを確認する。

  • Slack からの受信リクエストでは異なる認証メカニズムが使用されるため、これらのパスによって「匿名」リクエストが許可されることを確認する。
  • インスタンスを公開できない場合でも、このページ説明に従ってカスタム アプリを作成することで、通知専用モードで統合を利用できる。

検証イベント エンドポイントにリクエストを実行することで、統合が利用可能かどうかを確認できます。bash ターミナルでは、次のコマンドで実行できます。

curl -X POST \
  https://<bitbucket-base-url>/rest/slack/latest/event \
  -H 'Content-Type: application/json' \
  -H "X-Slack-Request-Timestamp: $(date +%s)" \
  -H 'X-Slack-Signature: any-value' \
  -d '{"challenge": "boo","type": "url_verification"}'

Slack でのインスタンス URL の送信失敗

インスタンスの URL を送信する際に、アプリがワークスペースから削除された直後に「Oops」エラーが発生することがあります。これは、Slack がアンインストールを完了する前にインスタンスに到達しようとするためです。

この問題は、15 分以内に自動的に修正されるか Slack によってプロセスが終了します。

これはアトラシアンのサポート対象ですか?

はい、もちろんです。この統合機能は、アトラシアンがビルドして保守しています。サポートが必要な場合は、support.atlassian.com にアクセスしてください。

最終更新日 2023 年 11 月 24 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.