Jenkins から Slack へ通知する

更新日:

CI環境を使っているとやはりChatwork、Slack、Teams等のコミュニケーションツールへ通知したい事がよくありますよね。今回はJenkinsの Slack Notification プラグインを使用した方法の説明です。

最近は簡単にインストール設定できるな~と思って、なんとなくマニュアル読んでやってたら軽くハマったのでメモに残します。

Jenkins にプラグインを追加する

Slack以外でも、curlで送ってしまう事が多いのですが、今回はプラグインを使用します。

 Slack Notification
  https://plugins.jenkins.io/slack/

curlで送るのはメッセージを直接作成したいからですが、Slack Notification プラグインを使うと pipelineでプラグインを使用しつつメッセージを作成して送る事が出来るので、じゃ~curlで書くよりもそのまま使用しようという事です。

Jenkinsへのプラグイン追加方法は省略します。

ハマった事

Slackの Jenkins CIを使用し Jenkins Slack Notification プラグインからテストで送ってみるが、以下のようなエラーが発生していました。

3月 13, 2021 2:48:33 午後 警告 jenkins.plugins.slack.StandardSlackService postToSlack
Error posting to Slack
java.net.UnknownHostException: そのようなホストは不明です。 (https)
	at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
	at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:928)
	at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1514)
	at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:847)
	at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1504)
	at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1363)
3月 13, 2021 2:53:18 午後 警告 jenkins.plugins.slack.StandardSlackService postToSlack
Slack post may have failed. Response: {"ok":false,"error":"invalid_auth"}

上手く行かない... ホスト不明とはDNS系の問題か?でも設定変えたら違うエラーになった。なんだ?

Slack アプリを作成する

上手く行かなかったので、ちゃんとマニュアルを読んでみると

Bot user mode
There's two ways to authenticate with slack using this plugin.

1. Using the "Jenkins CI" app written by Slack, it's what is known as a 'legacy app' written directly into the slack code base and not maintained anymore.
2. Creating your own custom "Slack app" and installing it to your workspace.

Slack Notification

Jenkins CI は、「legacy app」「not maintained anymore.」と書かれている事に気づきました。それで、その後に アプリの作成方法が記載されているわけですね...
続きを読んでいけば アプリを作成しワークスペースに追加する事が出来ます。
プラグインのマニュアルを参考に作成してみてください。

Creating your app
Note: These docs may become outdated as Slack changes their website, if they do become outdated please send a PR here to update the docs.

1. ~
...
13. ~

Slack Notification

1~10まで進めて、"Bot User OAuth Access Token" をコピーできていれば
 ・アプリの作成
 ・ワークスペースにアプリ追加
まで完了します。

Slack チャネルに アプリを追加する

通知したいチャネルにアプリを追加しないと使用できません。
アプリを追加したいチャネルにある「i」をクリックします。

「More」を選択し、「Add apps」をクリックします。

作成したアプリの「Add」ボタンをクリックします。

Jenkins Slack Notification プラグインの設定を行う

Jenkinsのシステム設定内に Slack Notification プラグインの設定があります。

先ほどコピーしたOAuth トークン をシークレットテキストとして登録し各種設定をしています。

Test Connection をクリックし成功すると、
Jenkinsの画面上に「Success」と表示され、Slackにも投稿されます。

以上で設定は完了です。

エラー発生後にマニュアルを読んで解決していますが、最初に
 ・Jenkinsで、Slackのプラグイン
 ・Slackで、Jenkinsアプリ
を検索し、それっぽい物をなんとなくで使用しようとした事でエラーになったという感じでした。

ちゃんとマニュアル読んでから使おう

-CI
-, ,

Copyright© 打ち聞かせ , 2021 All Rights Reserved Powered by STINGER.