極光日記

JenkinsからSlackで通知を送信する(2025年)

作成日

JenkinsからSlackで通知を送信する

Jenkinsからジョブの失敗などの際にSlackで通知を送信する方法を紹介します。
成功すると次のような通知が送信されます(文言などは設定次第で異なります)。

JenkinsによるSlack通知例

歴史的にこの方法は何度も変遷しており、現在はうまくいかない古い情報も検索でヒットします。
そのため、類似記事はすでに多数ありますが、自分なりに2025年4月時点で動作確認できた方法をまとめておきます。

前提

  • Jenkinsバージョン: 2.440.1
  • Slack Notificationプラグインバージョン: 629.vf00ea_cb_40d53

(いずれも2025年時点ではやや古いです)

私の環境は、すでに多くのプラグインが導入されており、ある意味「汚れた」状態です。
そのため、以下の手順が他環境では再現できない可能性もあります。ご注意ください。

また、私はJenkins(特にCredential管理)やSlackに非常に詳しいわけではないため、その点もご了承ください。


手順

基本的に公式手順に沿っています。

ただし、いくつか注意点や補足を加えながら説明します。

プラグインをインストール

Jenkinsの「プラグイン管理」(/manage/pluginManager/available)画面から、Slack Notification プラグインをインストールします。
Slackで検索すると簡単に見つかります。

(私はすでにインストール済みのため、少し表示が違っていますが、次のようなプラグインです)

プラグインインストール画面

Slackにアプリをインストール

https://api.slack.com/apps にアクセスし、右上の「Create New App」をクリックします。

Create New App画面

From a manifestでアプリ作成

「Create New App」を押すとモーダルが開きます。ここでFrom a manifestを選択します。

from a manifest

適切なWorkspaceを選び「Next」を押します。

select ws

続いて、「Create app from manifest」画面に切り替わるので、YAMLタブに変更し、入力済みの内容を削除します。
公式READMEにある以下のYAMLをコピー&ペーストして「Next」へ進みます。

display_information:
  name: Jenkins
features:
  bot_user:
    display_name: Jenkins
    always_online: true
oauth_config:
  scopes:
    bot:
      - channels:read
      - chat:write
      - chat:write.customize
      - files:write
      - reactions:write
      - users:read
      - users:read.email
      - groups:read
settings:
  org_deploy_enabled: false
  socket_mode_enabled: false
  token_rotation_enabled: false

yaml

Review summary & create your app

内容を確認後、「Create」を押します。

権限確認画面

トークン取得

「Basic Information」ページへ遷移したら、左メニューから「Install App」をクリックします。
(または、https://api.slack.com/apps から対象アプリを選択しても到達できます)

basic info

「Install to {ワークスペース名}」ボタンを押し、権限リクエスト画面で「許可」します。

install app

インストール後、「Bot User OAuth Token」xoxb-...で始まる)を控えておきます。
このトークンを後でJenkinsに登録します。

Slackチャンネルにアプリを招待

通知を送りたいチャンネルを開き、右上のユーザー一覧ボタンから

slack invite

「インテグレーション」タブ → 「アプリを追加」→ 作成したアプリ(Jenkins)を追加します。

Jenkinsにトークンを保存

Jenkinsに戻り、「Jenkinsの管理 > システム設定」(/manage/configure)に進みます。
「Slack」セクション内でCredentialを追加します。

  • 「+追加」→「Jenkins」を選択
  • 下の画像のようなモーダルが出てくると思います

credential

  • 種類を「ユーザー名とパスワード」から「Secret Text」に変更
  • Secret欄に、控えたBot Tokenxoxb-...)を入力
  • 説明は任意に入力してください。IDは空でも大丈夫だったと思います
  • 入力後Createを押下してください

もしここでうまくCredential作成できない場合は、
/manage/credentials/store/system/domain/_/newCredentials
からもCredentialを追加できます。
こちらから追加する場合も最初はやはり「ユーザー名とパスワード」になっていると思うので、「Secret Text」にして設定してください。

add credential

Slackプラグインの設定

続いてSlack通知設定を行います。

項目 内容
Workspace Slack App作成時に使用したワークスペース名
Credential 先ほど登録したSlack Bot Token(Secret Text)Credential
Default Channel 通知したいチャンネル名(例:#jenkins
Custom Slack App Bot User ✅ チェックを入れる

JenkinsのSlack通知プラグイン設定画面

※ チャンネル名は#あり/なしどちらでも動作しました。
※ チャンネル名ではなくチャンネルIDも利用可能です(チャンネル名のリネームに耐えられるのでIDのほうが良いかもしれません)

テスト送信

設定画面の「Test Connection」ボタンを押してください。
Slack側にテストメッセージが届き、Jenkins画面にも「Success」と出れば成功です。

ジョブの設定

実際に各ジョブにSlack通知の設定をしてみます。
これはJenkinsfileからの設定も可能であるなど人によっていろいろな設定の好みがあるので簡単な紹介のみとします。

各ジョブの設定画面で最下部に「ビルド後の処理」があるので、「ビルド後の処理の追加」を押下し、「Slack Notification」を選択します。
すると添付画像のようにSlack Noitifications設定欄が追加されるので、適宜チェックを入れて設定を保存します。

ジョブのConfiguration画面

送信条件(ビルド成功・失敗など)にチェックを入れて設定保存します。

うまくいかない場合

  • Jenkinsサーバー側ログを確認:
    sudo journalctl -u jenkins
  • ブラウザのDevToolsコンソールログも確認(フロントエンド側エラーの場合あり)