WebhookやHubotを使ってチャットとSubversion、Redmine、Jenkinsを連携させる基本設定とは:OSSチャット基盤RocketChat入門(終)(2/5 ページ)
OSSのチャット基盤であり、Dockerコンテナとして簡単に導入できるRocketChatを使った、コミュニケーション基盤の作り方を学ぶ連載。最終回は、RocketChatと他のアプリケーション(Subversion、Redmine、Jenkins、Zabbix、fluentdなど)と連携させる方法を紹介します。
Subversionのコミット情報をチャンネルに投稿するには
実際に、Webhookを使ってRocketChatと他アプリケーションを連携してみましょう。まずは、Subversionと連携させて、Subversionのコミット情報をRocketChatのチャンネルに投稿します。
SubversionからRocketChatへのデータ送信にはcurlコマンドを使用し、データを送信するイベントとしてSubversionの「post-commitフック」を使用します。post-commitフックとは、Subversionにおいてコミットが実施され、新しいリビジョンが作られた後に実行される処理イベントです。
今回はコミット情報としては「コミットユーザー」「リビジョン」「コミットメッセージ」「コミットのサマリー」を使うこととします。
以下、RocketChat+Subversion連携の設定の流れを記載します(カッコ内は設定対象のソフトウェア)。
【1】Webhook URLの作成(RocketChat)
まず、Subversionからデータを受信するためのWebhook URLを作成します。作成方法は前述した通りですが、ここでは「#subversion」というパブリックチャンネルに投稿されるように設定しています。
【2】post-commitフックを作成(Subversion)
続いて、Subversionの「post-commit」フックを作成します。Subversionのリポジトリのルートディレクトリ(以下、${REPOS}と表記)にある「hooks」ディレクトリ配下に「post-commit」という実行ファイルを作成します。このファイルがコミット後に実行されます。
以下、今回作成する「post-commit」の内容を記載します。なお紹介するのは、あくまで一例ですので、投稿したい内容に応じて適宜カスタマイズしてください(※Webhook URLは自身の環境に合わせて指定してください)。
export LANG=ja_JP.UTF-8 REPOS="$1" REV="$2" TXN_NAME="$3" ####################### # RocketChat Settings # ####################### # RocketChatのチャンネル名(プライベートチャンネルの場合は「#」は不要) channel="#subversion" # ユーザー名 username="svn" # WebHookURL webhookUrl="http://〜 " ####################### # Subversion Settings # ####################### # コミットユーザー author=$(/usr/bin/svnlook author -r $REV $REPOS) # コミットメッセージ commit_msg=$(/usr/bin/svnlook log -r $REV $REPOS) # サマリー commit_summary=$(/usr/bin/svnlook changed -r $REV $REPOS) # 投稿内容(ヘッダー) text="New Commit by $author.\nRevision:$REV\nCommit Message:$commit_msg" # 投稿内容(ボディー) value="Commit Summary:$commit_summary" ####################### # RocketChatに通知 # ####################### /usr/bin/curl -X POST --data-urlencode "payload={\"channel\": \"${channel}\", \"username\": \"${username}\", \"text\": \"${text}\", \"attachments\": [{ \"title\": \"${REPOS}\", \"title_link\": \"http://localhost/svn/sample\", \"text\": \"${value}\", \"color\": \"#764FA5\" } ] }" ${webhookUrl}
作成したら、実行権限を付与します。
# chmod 755 ${REPOS}/hooks/post-commit
実行結果
以上で設定は完了です。Subversionへコミットを行うと、RocketChatの「#subversion」チャンネルに以下のようなコミット情報が通知されるので、試してみてください。
Tips FirewallとSELINUXの無効化について
FirewallおよびSELINUXが有効になっていると、受信側でWebhookのデータを受信できないことがあります。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- IBMとSlackが提携、“Watson”搭載Slackツールを開発可能に
IBMとSlackが、Webコミュニケーションツール「Slack」とコグニティブ技術「Watson」の連携取り組みで提携。Watsonのコグニティブ技術を融合したSlackツールなどを開発していく。 - 実録! チーム開発が捗り過ぎるSlack+GitHub+Trelloの使い方
スタートアップではいかにお金を使わずにプロダクトを開発するかは成功につながる大きなポイントとなる。コストを掛けずにプロダクトを作っていく上で、導入すべきツールをどのように使うかを数回に分けて紹介。今回は、開発プロジェクト向けチャットツール「Slack」の特徴を解説しプロジェクト管理ツール「Trello」や「GitHub」と組み合わせた活用事例を紹介する。 - HubotとZabbixを連携すればワンオペ監視でも寂しくない
GitHub社が開発しているbotフレームワークHubotを使ってチャットアプリ上でチーム開発をいかに効率化していくかを解説していきます。今回は、Zabbixをインストールして監視設定を行い、Hubotと連携してサーバーからの障害検知をチャットに通知する方法などを紹介します。