正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

ChatOps

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLab ChatOpsを使用して、Slackなどのチャットサービスを介してCI/CDのジョブを操作します。

多くの組織では、SlackやMattermostを使用して共同作業、トラブルシューティングを行う、作業計画を行っています。ChatOpsを使用すると、チームと作業について話し合い、CI/CDのジョブを実行し、ジョブの出力を表示するすべての操作を同じアプリケーションから行えます。

スラッシュコマンドのインテグレーション

runスラッシュコマンドでChatOpsをトリガーすることができます。

利用可能な次のインテグレーションがあります:

ChatOpsのワークフローとCI/CDの設定

ChatOpsはプロジェクトのデフォルトブランチにある.gitlab-ci.ymlで指定されたジョブを探します。ジョブが見つかった場合、ChatOpsは指定されたジョブのみを含むパイプラインを作成します。when: manualを設定した場合、ChatOpsはパイプラインを作成しますが、ジョブは自動的に開始されません。

ChatOpsで実行されるジョブは、GitLabから実行されるジョブと同じ機能を持っています。ジョブは、既存のCI/CD変数GITLAB_USER_IDなど)を使用して追加の権限検証を実行できますが、これらの変数はオーバーライドできます。

標準のCI/CDパイプラインの一部としてジョブが実行されないように、rulesを設定する必要があります。

ChatOpsは次のCI/CD変数をジョブに渡します:

  • CHAT_INPUT - runスラッシュコマンドに渡される引数。
  • CHAT_CHANNEL - ジョブが実行されるチャットチャンネルの名前。
  • CHAT_USER_ID - ジョブを実行するユーザーのチャットサービスID。

ジョブの実行時:

  • ジョブが30分未満で完了した場合、ChatOpsはジョブの出力をチャットチャンネルに送信します。
  • ジョブが30分を超えて完了した場合、Slack APIのような方法を使用してチャンネルにデータを送信する必要があります。

ChatOpsからジョブを除外する

ジョブがチャットから実行されるのを防ぐには:

  • .gitlab-ci.ymlで、ジョブをexcept: [chat]に設定します。

ChatOpsの返信をカスタマイズ

ChatOpsは、単一のコマンドを持つジョブの出力を、返信としてチャンネルに送信します。たとえば、次のジョブが実行されると、チャットの返信はHello worldとなります:

stages:
- chatops

hello-world:
  stage: chatops
  rules:
    - if: $CI_PIPELINE_SOURCE == "chat"
  script:
    - echo "Hello World"

ジョブに複数のコマンドが含まれている場合、またはbefore_scriptが設定されている場合、ChatOpsはコマンドとその出力をチャンネルに送信します。コマンドはANSIカラーコードでラップされます。

1つのコマンドの出力で選択的に返信するには、出力をchat_replyセクションに配置します。たとえば、次のジョブは現在のディレクトリのファイルをリスト表示します:

stages:
- chatops

ls:
  stage: chatops
  rules:
    - if: $CI_PIPELINE_SOURCE == "chat"
  script:
    - echo "This command will not be shown."
    - echo -e "section_start:$( date +%s ):chat_reply\r\033[0K\n$( ls -la )\nsection_end:$( date +%s ):chat_reply\r\033[0K"

ChatOpsを使用してCI/CDジョブをトリガーする

前提条件:

  • プロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。
  • プロジェクトはスラッシュコマンドのインテグレーションを使用するように設定されています。

SlackまたはMattermostからデフォルトブランチでCI/CDジョブを実行できます。

CI/CDジョブをトリガーするスラッシュコマンドは、プロジェクトにどのスラッシュコマンドインテグレーションが設定されているかによって異なります。

  • GitLab for Slack appの場合、/gitlab <project-name> run <job name> <arguments>を使用します。
  • SlackまたはMattermostスラッシュコマンドの場合、/<trigger-name> run <job name> <arguments>を使用します。

各項目の説明は以下のとおりです:

  • <job name>は実行するCI/CDジョブの名前です。
  • <arguments>はCI/CDジョブに渡す引数です。
  • <trigger-name>はSlackまたはMattermostインテグレーション用に設定されたトリガー名です。

ChatOpsは、指定されたジョブのみを含むパイプラインをスケジュールします。