Hubot環境ができたら、RocketChatとHubotを連携させて「チャットからJenkinsにビルドさせる」という簡単なChatOpsを体験してみましょう。
以下、RocketChat+Hubot+Jenkinsの連携イメージです。
HubotがログインしているRocketChatのチャンネルで、Hubotにビルドを依頼します。すると、「jenkins.coffee」というHubotスクリプトから、Jenkinsのビルドを実行します。
設定はJenkinsのビルドを行う「jenkins.coffee」をHubotスクリプトとして追加するだけです。「jenkins.coffee」という記述を「hubot-scripts.json」に追加してください。なお「jenkins.coffee」は、Hubotコンテナの「node_modules」にすでに用意されています。
# vi hubot-scripts.json ["Jenkins.coffee"]
それでは実際にRocketChatからJenkinsのジョブをビルドしてみましょう。ここでは、「Sample01」というジョブをビルドします。RocketChat画面から「#hubot」チャンネルを選択し、「@rocketchatbot: jenkins build Sample01」と投稿してください。以下のように、HubotがJenkinsのジョブをビルドしてくれます。
なお、「jenkins.coffee」ではビルドを含め以下操作が可能ですので、ぜひ試してみてください。
コマンド | 構文 | 説明 |
---|---|---|
b | @botname: jenkins b [ジョブ番号] | Jenkinsのジョブをビルドする(ジョブ番号指定) |
build | @botname: jenkins build [ジョブ名] | Jenkinsのジョブをビルドする(ジョブ名指定) |
@botname: jenkins build [ジョブ名] [パラメータ] | Jenkinsのジョブをビルドする(ジョブ名とパラメータを指定) | |
list | @botname: jenkins list | Jenkinsジョブの一覧を表示 |
describe | @botname: jenkins describe [ジョブ名] | Jenkinsジョブの説明を表示 |
last | @botname: jenkins last [ジョブ名] | Jenkinsジョブの最終実行結果を表示 |
今回は、Webhookを使ったSubversionやRedmineとの連携、Hubotを使ったJenkinsとの連携を紹介しました。しかし、今回紹介した内容はあくまで一例であり、RocketChatとアプリケーションを連携は多岐にわたります。以下、その他の事例を簡単に紹介します。
ZabbixからWebhook URLにメッセージを送信する「zabbix-slack-alertscript」というシェルスクリプトがあります(もともとはSlack用)。Zabbixのmedia typeに追加すれば、監視メッセージをチャンネルに投稿できます(参考)。
また、「hubot-zabbix-notifier」というHubotスクリプトもあり、Hubotを使った方法でも実現可能です(参考)。
Hubotには「hubot-rss-reader」というHubotスクリプトあります。「hubot rss add (URL)」と投稿するとチャンネルにRSSを追加でき、RocketChatと連携させればニュースサイトやブログなどの情報をチャットから拾えます(参考)。
fluentdからログ情報をチャットツールに流すというのはよく聞く話です。fluentdのプラグイン「fluent-plugin-curl」を使えば、curlコマンドでWebhookを使った連携が可能です(参考)。
また、Slack用へ通知を行う「fluent-plugin-slack」というプラグインも存在します(参考)。
本連載では3回にわたり、OSSチャット基盤RocketChat入門の記事を執筆してきました。本連載は今回で最終回です。本連載を通じて、RocketChatおよびチャットツールに興味を持っていただけたら幸いです。ご自身の環境に合わせたチャット基盤の導入を検討してみてはいかがでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.