JenkinsからYammerに通知をしてみました。

そもそもはBuild通知というよりは、自分の部署のBlogにJenkinsがPOSTしたりすることがあるので、その通知をYammerに投げてくれると気がつくいて見にいけるんだけど…、みたいなコメントをスタッフからいただいたのが始まりです。

最初はSkypeAPIでの通知が良いなあと思ったのですが、Skypeの場合はSkypeクライアントを起動していないといけません。その点、Yammerだと基本はWebなので、APIをたたくかメール送信でPOSTができますので、幾分敷居が低くなります。
(とはいえ、社外のサービスではありますので、POSTする内容には十分配慮しないといけませんが…)

さて、どうやって通知させてみようかな…と思っていたら、ズバリ、Yammer Pluginというものがありました。

こちらのPluginのページ、とても丁寧な解説&スクリーンショットが載っています。英語がよくわからなくてもある程度は設定できてしまうのが有難い!

Jenkins yammer plugin 設定画面

しかし、それ以前に、こういったOAthを使ってアクセスするAPIを使うのは、実は初めてで、そもそもKeyやTokenを取得するところが敷居が高く、はてどうしたものか…というところでした(^^;

よくよくPluginのページを見ると、YammerでのOAthのtokenの取得方法が書かれていましたので、まずはこちらに従ってYammer上での作業を行いました。

1. Yammerに新しいアプリケーションを登録

その、「アプリケーション」ってほどのものじゃないんですけど…という申し訳無さを感じつつ、ひとまず “Register New App” をクリックして、登録画面を開きます。

名前は適当に入れました…。

jenkins-yammer-app-regist-form

Basic Configで設定したのは、下記の項目です。(よくわからなかったので…)

  • Application name
  • Organization
  • Website
  • Support e-mail

アイコンなんかも無しでも大丈夫で、この次、App Directory Config タブから、”Deploy to local App Directory” ボタンを押しました。Stepもまだまだ先にあるようですが、とりあえず下記のステップまででもTokenの取得は出来ています。(こちらは、下図のようにStatusタブで確認できます)

jenkins-yammer-app-regist

Deployしたら、Status Tabをクリックすると、下部にClient Key & Client Secretが表示されているのがわかります。

2. OAuth TokenをGETするには…

分かっている方には申し訳ないのですが、『わたしはこの後どうするんだー?』と悩むことしばし..。

やがてJenkins Yammer Pluginの説明を見返すと、『この get_auth.rb っていうスクリプトをダウンロードして、実行してね』と書かれているではありませんか!

ダウンロードしたスクリプトを ruby get_auth.rb で実行すると、ターミナルから対話形式でOAth Tokenの取得ができるようになっていました。ありがたや、ありがたや…。

処理は、下記のとおりです。

  • Client Key, Client Secretを入れる
  • 所定のURLにアクセスして、コードを取得してね、と言われる <- 実はここに気がつかなくてちょっと悩みました(^^;
  • 取得したコードを、再度コマンドラインにセットする
  • すると、スクリプトがOAuth Tokenを取ってきてくれて、yamlファイルに書き出してくれる!

おかげさまで、このPluginの利用に必要な、4つのパラメータが取得できました!

3. YammerにGroupを作ってPOSTしてみたよ!

さて、いよいよYammerにPOSTする準備が出来ました!
ですが、いきなり社内とはいえ自分のドメインのオープンなメッセージとしてPOSTするのは恥ずかしい…。

そこで、Pluginの図にもあったように、BuildNotificationという、ビルド通知専用のグループを作成してPOSTすることにしました。

せっかくなので@masanobuimaiさん作の、忍者Jenkinsをグループのアイコンに設定しました。(CacooストアでGETいたしました、ありがとうございます!)

jenkins-yammer-via-client

初POSTは、Sphinxドキュメントをビルドするジョブの通知。
『コンテンツのPublishingとか公開もビルドの一つ』と考えて、まずは差し障りのなさそうな、ドキュメントを生成するジョブが成功したらYammerにPOSTするものを設定してみました。

どうなるかなーと思いましたが、意外とあっさりYammerにPOST成功。

ただし、このPluginだと、複雑な文面をPOSTすることは出来なさそうです。かといってソースを見て自分で調整するのは未だできないので、RubyのYammer libraryを使ってもう少し遊びの文面をPOSTできるように企んでいます。
そもそも、OAuth Tokenの取得方法すら分からなかったのですが、このPluginを使うことで少しばかりやり方がわかったので、別Scriptで書いてみる気が出てきました(^^

おまけにもならないですが、ruby のYammerライブラリを使うと、こんな感じです。(Twitterライブラリとほぼおんなじ感じらしい)

require 'yammer'
# ログイン
Yammer.configure do |config|
config.consumer_key = 'アプリのatoken'
config.consumer_secret = 'アプリのsecret'
config.oauth_token = 'ユーザのatoken'
config.oauth_token_secret = 'ユーザのsecret'
end
Yammer.my_feed # タイムライン表示
Yammer.update(“POSTするよー”
)  #update メソッドでPOSTします

お願いなど:

ついつい浮かれて試してしまう性格なので、そもそもこんな使い方してはいけません!とか、これは危ないよ、といったご指摘もいただけると幸いです…。

コメント

人気の投稿