GitLab for Slackアプリ
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
管理者向けドキュメントについては、GitLab for Slackアプリの管理を参照してください。
GitLab for Slackアプリは、Slackワークスペースでスラッシュコマンド、通知、およびGitLab Duoインテグレーションを提供するネイティブSlackアプリです。GitLabは、SlackユーザーとGitLabユーザーをリンクさせることで、Slackで実行するコマンドが、リンクされたGitLabユーザーによって実行されるようにします。
GitLab for Slackアプリをインストールする
前提条件:
- Slackワークスペースにアプリを追加するための適切な権限が必要です。
- GitLab Self-Managedでは、管理者がインテグレーションを有効にする必要があります。
GitLab for Slackアプリはきめ細かなパーミッションを使用します。機能は変更されていませんが、アプリを再インストールする必要があります。
プロジェクト設定またはグループ設定から
プロジェクトまたはグループの設定からGitLab for Slackアプリをインストールするには、次の手順に従います。
- 上部のバーで、検索または移動先を選択して、プロジェクトまたはグループを見つけます。
- 左側のサイドバーで、設定 > インテグレーションを選択します。
- GitLab for Slackアプリを選択します。
- GitLab for Slackアプリをインストールを選択します。Slackの確認ページにリダイレクトされます。
- Slackの確認ページで次の手順を実行します。
- オプション。複数のSlackワークスペースにサインインしている場合は、右上にあるドロップダウンリストから、アプリをインストールするワークスペースを選択します。GitLab Self-ManagedおよびGitLab Dedicatedでは、ドロップダウンリストを表示するには、まず管理者が複数のワークスペースのサポートを有効にする必要があります。
- 許可を選択します。
グループにアプリをインストールすると、インテグレーションが設定されていないグループ内のすべてのサブグループとプロジェクトでも、インテグレーションが有効になります。すでにインテグレーションが設定されているサブグループやプロジェクトは影響を受けませんが、いつでも継承された設定を使用できます。詳細については、プロジェクトインテグレーションのグループデフォルト設定を管理するを参照してください。各プロジェクトは、そのプロジェクトパスに基づいたプロジェクト固有のエイリアスを取得し、スラッシュコマンドで使用できます。
Slack App Directoryから
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com
GitLab.comでは、Slack App DirectoryからGitLab for Slackアプリをインストールすることもできます。
Slack App DirectoryからGitLab for Slackアプリをインストールするには、次の手順に従います。
- GitLab for Slackのページに移動します。
- SlackワークスペースとリンクするGitLabプロジェクトを選択します。
GitLab for Slackアプリを再インストールする
GitLabがGitLab for Slackアプリの新しい機能をリリースした場合、これらの機能を使用するには、アプリを再インストールする必要がある場合があります。
GitLab for Slackアプリを再インストールするには、次の手順に従います。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、設定 > インテグレーションを選択します。
- GitLab for Slackアプリを選択します。
- GitLab for Slackアプリをインストールを選択します。Slackの確認ページにリダイレクトされます。
- Slackの確認ページで次の手順を実行します。
- オプション。複数のSlackワークスペースにサインインしている場合は、右上にあるドロップダウンリストから、アプリを再インストールするワークスペースを選択します。GitLab Self-ManagedおよびGitLab Dedicatedでは、ドロップダウンリストを表示するには、まず管理者が複数のワークスペースのサポートを有効にする必要があります。
- 許可を選択します。
GitLab for Slackアプリは、インテグレーションを使用するすべてのプロジェクトで更新されます。
または、インテグレーションを再度設定することもできます。
GitLab Duo
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: 実験的機能
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。この機能はテストには利用できますが、本番環境での使用には適していません。
複数のSlackインストールをSlack Enterprise Gridなしで使用している場合、SlackはGitLab Duoのレート制限を1分あたり15会話オブジェクトに設定します。単一の実行がチャンネル履歴から50件のメッセージをコンテキストとして要求するため、これによりインテグレーションの機能が妨げられます。SlackでGitLab Duoのレート制限を回避するには、すべてのSlackワークスペースを単一のEnterprise Grid組織に保持してください。
ボットが存在する任意のチャンネルまたはスレッドでGitLabボットにメンションすることで、Slackから直接GitLab Duoと対話できます。GitLab Duoは、会話スレッド全体と最近のチャンネル履歴をコンテキストとして読み込み、CI/CD Runnerでフローを実行し、結果をSlackスレッドに投稿します。
例えば、GitLab Duoに以下のことを依頼できます:
- 会話をGitLabイシューに変換します。
- 既存のイシューまたはマージリクエストを検索します。
- ディスカッションスレッドを要約します。
- プロジェクトに関する質問に回答します。
各インタラクションはGitLab Duoエージェントセッションを実行し、GitLabクレジットを消費します。セッションは、呼び出し元のユーザーのデフォルトDuoネームスペースにあるCI/CD Runnerで実行され、初回使用時にduo-workspaceプロジェクトが自動的に作成されます。異なるトップレベルグループのプロジェクトについて尋ねると、SlackのGitLab Duoは失敗します。
チャンネルでメンションされると、エージェントはそのチャンネルからの最近のメッセージをコンテキストとして読み込み、応答します。応答中のメッセージより後に投稿されたメッセージは含まれません。ユーザーがGitLab Duoと対話すると、実行したユーザーのみに表示されるエージェントセッションが作成され、duo-workspaceプロジェクトにアクセスできるすべての人には表示されません。
スレッドでGitLabボットにメンションすると、会話のコンテンツ全体(すべての参加者からのメッセージを含む)が大規模言語モデル(LLM)に送信され、応答が生成されます。GitLab Duoにメンションするスレッドでは、機密情報を共有しないでください。
前提条件
- GitLab Duo Agent Platformを有効にする。
- ベータ版および実験的機能を有効にする。
- SlackアカウントをGitLabアカウントにリンクします。アカウントがリンクされていない場合、GitLabは初回メンション時に接続を承認するためのリンクを含むメッセージを送信します。
- デフォルトのGitLab Duoネームスペースを設定する。
- トップレベルグループのデベロッパーフローを有効にします。
- GitLabボットを使用したいSlackチャンネルに追加します。
- 既存のインストールでは、GitLab Duoに必要な追加のパーミッションを付与するために、GitLab for Slackアプリを再インストールします。
SlackでGitLab Duoを使用する
SlackでGitLab Duoを使用するには:
/invite @GitLabを使用してアプリをチャンネルに招待します。- Slackチャンネルまたはそのチャンネルのスレッドで、
@GitLabに続けてリクエストを入力します(例:@GitLab create an issue to track this bug)。 - 初めて
@GitLabと入力すると、GitLabはSlackとGitLabアカウントを接続するためのリンクを含むメッセージを送信します。 - GitLab Duoはあなたのリクエストを認識し、タスクの実行を開始します。
- タスクが完了すると、GitLab Duoはスレッド形式で結果を返信します。
エラーが発生した場合、GitLab Duoはあなたのメッセージにロックされた南京錠の絵文字リアクションを返し、イシューの詳細を記載したメッセージを送信します。このメッセージはあなたにのみ表示されます。
この機能のパフォーマンスに関するフィードバックを残すには、任意の応答に「いいね」または「よくないね」を使用します。
SlackのGitLab Duoは以下のチャンネルとスレッドで動作します:
- エージェントがチャンネルのメンバーである公開およびプライベートチャンネル。
- 2人以上のグループダイレクトメッセージ。GitLab Duoは、メンションされたメッセージのみを認識し、以前の会話は認識しません。
GitLab Duoは以下のスレッドでは動作しません:
- エージェントとの1対1のダイレクトメッセージ。
- Slackトップバーのエージェントパネル内。
ワークスペースプロジェクト
SlackからGitLab Duoを初めて使用すると、デフォルトのGitLab Duoネームスペースにduo-workspaceというワークスペースプロジェクトが自動的に作成されます。このプロジェクトは、Slackからトリガーされたフローの実行環境として機能します。
ワークスペースプロジェクトでエージェントの動作をカスタマイズできます。詳細については、デベロッパーフローを参照してください。
GitLab for Slackアプリのパーミッション
GitLab Duoには、以下の追加のGitLab for Slackアプリのパーミッションが必要です:
| スコープ | 目的 |
|---|---|
app_mentions:read | ユーザーがチャンネルでボットにメンションしたときにイベントを受信します。 |
channels:history | 公開チャンネルの会話履歴を読み取り、スレッドおよびチャンネルのコンテキストをエージェントに提供します。 |
groups:history | プライベートチャンネルの会話履歴を読み取り、スレッドおよびチャンネルのコンテキストをエージェントに提供します。 |
reactions:write | メッセージに絵文字リアクションを追加して、エージェントのライフサイクルステータスを示します。 |
新規インストールでは、これらのパーミッションが自動的に付与されます。既存のインストールでは、GitLab for Slackアプリを再インストールした後にのみ、これらのパーミッションが付与されます。
スラッシュコマンド
スラッシュコマンドを使用して、一般的なGitLabオペレーションを実行できます。
GitLab for Slackアプリの場合:
- 最初のスラッシュコマンドを実行するときに、Slackユーザーを承認する必要があります。
<project>をプロジェクトのフルパスに置き換えるか、スラッシュコマンドのプロジェクトエイリアスを作成できます。
代わりにMattermostスラッシュコマンドを使用する場合:
/gitlabを、これらのインテグレーション用に設定したトリガー名に置き換えます。<project>を削除します。
GitLabでは、次のスラッシュコマンドを使用できます。
| コマンド | 説明 |
|---|---|
/gitlab help | 使用可能なすべてのスラッシュコマンドを表示します。 |
/gitlab <project> issue show <id> | ID <id>があるイシューを表示します。 |
/gitlab <project> issue new <title> Shift+Enter <description> | タイトル<title>と説明<description>があるイシューを作成します。 |
/gitlab <project> issue search <query> | <query>に一致するイシューを最大5つ表示します。 |
/gitlab <project> issue move <id> to <project> | ID <id>があるイシューを<project>に移動します。 |
/gitlab <project> issue close <id> | ID <id>があるイシューを閉じます。 |
/gitlab <project> issue comment <id> Shift+Enter <comment> | コメント本文<comment>があるコメントを、ID <id>があるイシューに追加します。 |
/gitlab <project> deploy <from> to <to> | <from>環境から<to>環境にデプロイします。 |
/gitlab <project> run <job name> <arguments> | デフォルトブランチでChatOpsジョブ<job name>を実行します。 |
/gitlab incident declare | Slackからインシデントを作成するためのダイアログを開きます。 |
deployコマンド
環境へのデプロイのために、GitLabはパイプラインで手動デプロイアクションを見つけようとします。
1つのデプロイアクションのみが環境に定義されている場合、そのアクションがトリガーされます。複数のデプロイアクションが定義されている場合、GitLabは環境名に一致するアクション名を見つけようとします。
GitLabが一致するデプロイアクションを見つけられない場合、コマンドはエラーを返します。
プロジェクトエイリアスを作成する
GitLab for Slackアプリでは、スラッシュコマンドはプロジェクトのフルパスをデフォルトで使用します。代わりに、プロジェクトエイリアスを使用することができます。
GitLab for Slackアプリでスラッシュコマンドのプロジェクトエイリアスを作成するには、次の手順に従います。
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、設定 > インテグレーションを選択します。
- GitLab for Slackアプリを選択します。
- プロジェクトのパスまたはエイリアスの横にある編集を選択します。
- 新しいエイリアスを入力し、変更を保存を選択します。
Slackワークスペースでエイリアスの衝突が発生した場合(例: 複数のプロジェクトまたはグループが同じエイリアスを使用しようとする場合)、GitLabは以下の形式でフォールバックエイリアスを自動的に割り当てます:
- プロジェクトの場合:
p-<project_id>(例:p-12345) - グループの場合:
g-<group_id>(例:g-67890)
優先エイリアスが利用できない場合、スラッシュコマンドでこれらのフォールバックエイリアスを使用できます。
Slack通知
特定のGitLabイベントに関する通知をSlackチャンネルで受信できます。
通知を設定する
Slack通知を設定するには、次の手順に従います。
上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
左側のサイドバーで、設定 > インテグレーションを選択します。
GitLab for Slackアプリを選択します。
トリガーセクションで、次のことを行います。
Slackで通知を受信するGitLabイベントごとにチェックボックスをオンにします。
オンにしたチェックボックスごとに、通知を受信するSlackチャンネルの名前を入力します。コンマで区切られた最大10個のチャンネル名を入力できます(例:
#channel-one, #channel-two)。Slackチャンネルがプライベートの場合、GitLab for Slackアプリをチャンネルに追加する必要があります。
オプション。通知設定セクションで、次のことを行います。
失敗したパイプラインのみを通知チェックボックスをオンにして、失敗したパイプラインの通知のみを受信します。
ステータス変更時のみ通知チェックボックスを選択すると、refのパイプラインステータスが変更された場合のみ通知を受信します。
通知を送信するブランチドロップダウンリストから、通知を受信するブランチを選択します。
これらのブランチから作成されたタグによってトリガーされたパイプラインについても通知が送信されます。
脆弱性に関する通知は、選択したブランチに関係なく、デフォルトブランチによってのみトリガーされます。詳細については、イシュー469373を参照してください。
通知するラベルには、通知を受信するためにGitLabイシュー、マージリクエスト、またはコメントが持つ必要のあるラベルの一部またはすべてを入力します。すべてのイベントの通知を受信するには、空白のままにします。
オプション。テスト設定を選択します。
変更を保存を選択します。
非公開チャンネルへの通知を受信する
Slack非公開チャンネルへの通知を受信するには、次の手順に従って、GitLab for Slackアプリをチャンネルに追加する必要があります。
@GitLabを入力して、チャンネルでアプリをメンションします。- チャンネルに追加を選択します。
通知イベント
次のGitLabイベントは、Slackで通知をトリガーできます。
| イベント | 説明 |
|---|---|
| プッシュ | プッシュがリポジトリに対して行われます。 |
| イシュー | 作業アイテムが作成、クローズ、または再オープンされました。 |
| 非公開のイシュー | 機密の作業アイテムが作成、クローズ、または再オープンされました。 |
| マージリクエスト | マージリクエストが作成、マージ、承認、クローズ、または再オープンされました。 |
| メモ | コメントが追加されます。 |
| 非公開メモ | 機密の作業アイテムに内部メモまたはコメントが追加されました。 |
| タグのプッシュ | タグがリポジトリにプッシュされるか、削除されます。 |
| パイプライン | パイプラインの状態が変化します。 |
| Wikiページ | Wikiページが作成または更新されます。 |
| デプロイ | デプロイが開始または終了します。 |
| 公開のグループメンション | 公開チャンネルでグループがメンションされます。 |
| 非公開のグループメンション | 非公開チャンネルでグループがメンションされます。 |
| インシデント | インシデントが作成、クローズ、または再度オープンされます。 |
| 脆弱性 | 新しい一意の脆弱性がデフォルトブランチに記録されます。 |
| アラート | 新しい一意のアラートが記録されます。 |
グループメンションの通知をトリガーする
グループメンションの通知イベントをトリガーするには、次の場所で@<group_name>を使用します。
- イシューとマージリクエストの説明
- イシュー、マージリクエスト、コミットのコメント