SkypeのチャットにJenkinsのビルド結果を通知する
はじめに
Jenkinsのビルド結果をSkypeのグループチャットに通知したいことがあります。Skype プラグインはあるのですが、ググるとインストールが大変でうまく動かないという声がチラホラありました。
とりあえずプラグインだけをインストールして設定を見てみましたが、通知先にユーザーしか選べず、グループチャットに対して通知できなさそうだったので、試していません。
代わりに以下のサイトを参考にさせてもらい、通知を実現しました。
Sending Jenkins build notifications to a Skype chat | Encoded Knowledge
SkypeプラグインはJenkinsのスレーブでSkypeを動かす必要がありますが、この方法ではSkypeを動かしているマシンからHTTPでJenkinsにアクセスできるだけで大丈夫です。
2. Skypeボットのスクリプトをダウンロードする
以下のコマンドを実行して、ボットのスクリプトをダウンロードします。
cd ~
git clone https://github.com/mirkonasato/buildchatbot.git
3. チャットの名前を取得する
以下のコマンドを実行して、最近のチャット一覧を表示させます。
. venv/bin/activate env DISPLAY=:20 XAUTHORITY=/home/skype/.Xauthority python buildchatbot/listrecentchats.py
以下のように表示されるので、通知したいチャットの右側の値("#myname/$abc123"など)をコピーしておきます。
"Our project chat" -> "#myname/$abc123" "Some other chat" -> "#friendname/$xyz789"
4. ボットのスクリプトに設定を書き込む
buildchatbot/buildchatbot.pyを開き、次のようになっている部分を
JENKINS_URL = 'http://127.0.0.1:8080' SKYPE_CHAT = '#user/$abc123'
以下のように変更します。
JENKINS_URL = '<JenkinsのURL(末尾のスラッシュを付けない)>' SKYPE_CHAT = '<3. でコピーした値>'
5. ボットを実行する
変更を保存したら、次のようにボットを実行します。
env DISPLAY=:20 XAUTHORITY=/home/skype/.Xauthority python buildchatbot/buildchatbot.py
この状態で、Jenkinsでビルドを実行して、目的のチャットに通知されることを確認します。
6. サーバー起動時にボットを起動する
UbuntuなのでUpstartを使います。今まで知らなかったですけど、普通のスクリプトをデーモン化したい時にすごく便利ですね。
sudoできるユーザーで、/etc/init/jenkins-skype-notification.conf
を以下の内容で作成します。
description "Jenkins Skype notification" author "orangain <orangain@gmail.com>" start on runlevel [2345] stop on runlevel [016] setuid Skype chdir /home/skype script . venv/bin/activate env DISPLAY=:20 XAUTHORITY=/home/skype/.Xauthority python buildchatbot/buildchatbot.py end script respawn
以下のコマンドを実行すれば、デーモンとして起動します。
sudo start jenkins-skype-notification