GoでパイプラインからSlackに通知する


これはTECHSCORE Advent Calendar 2015 の 7日目の記事です。

こんにちは、小野寺です。

私が所属しているチームでは、開発のチャットにSlackを使っています。
Slackを使っていると、あれもSlackで通知したい、これもSlackで通知したいという、
なんでもSlackに通知したいという気持ちになってきます。

今回はGo言語の勉強も兼ねてこんな通知を作ってみました。

Slackで通知したいこと

ターミナルでコマンドを実行して、標準出力をSlackにコピペする。
今回はよくやるこれを通知します。できたのが以下です。

-c Slackのチャンネルを指定します。
-l メッセージの左側のバーの色を指定します。(デフォルトで#dddddd, good, warning, danger)

結果

2015-12-04-notify-02

GoはビルドしてしまえばOSネイティブ環境で実行可能になるので、こういったツールを作ったときに導入しやすいと思います。

Attachmentsの注意点

SlackへのメッセージはIncoming Webhooksを使用しました。
Attachmentsというフォーマットを使ったのですが、AttachmentsではSlackのチャット上で使用できる precode がデフォルトでは使用できないようになっています。

今回は pre を使いたいので以下のような構造体を作成しました。

・SlackのMrkdwnフィールドをtrue
・AttachmentのMrkdwnInフィールドを["pretext","text","fields"]
とそれぞれ指定することでAttachmentsでも pre を使うことができるようになります。

以下、今回使用したコードです。

まとめ

今回は使用していませんが、Attachmentsでは画像やリンクなどリッチフォーマットでの通知が行えます。
今後もちょっとした業務の効率化・やっている感の向上・習慣化したいことなどを上手に通知していきたいです。


Advent Calendar 2015の連載記事

  1. TECHSCORE Advent Calendar 2015
  2. Redshift と PostgreSQL に同時に JDBC 接続する
  3. Lombok で Spice up your Java!
  4. 画像を指定するだけ!非デザイナーでも簡単にそれっぽい配色ができるツールを作ってみた
  5. 新卒文系エンジニアの記録:配属半年間の失敗を振り返ってみた
  6. 非同期処理のすすめ
  7. ioDrive2の導入で支える、そのIOPS - 導入検討編.
  8. GoでパイプラインからSlackに通知する
  9. fuse でオレオレファイルシステムを作ってみた (Haskell で)
  10. Erlang はじめました
  11. ちょっと地味なビルドとリリースの話 (レガシーシステム改革、はじめの一歩)
  12. Java8 最速 boolean[] to Stream 選手権
  13. Google Apps の Directory API にてWebブラウザを介さずに認証する
  14. 風データをビジュアルに表現する
  15. マイクロフレームワーク「Ninja」を使ってみる
  16. 赤ちゃんvimmerからよちよちvimmerにクラスチェンジを果たすためのTips
  17. PostgreSQL FDW を作ってSQLでログ検索してみた
  18. Goで偽名ジェネレータを作りました
  19. 書き込み中に削除されたファイルを救出する
  20. 運用情報更新のススメ
  21. ちゃんと読んでくれましたか?
  22. Presto コネクターを実装する 第三回
  23. Ruby2.3を触ってみる
  24. Git 困ったときのtips集
  25. 5分で読む入門編:Java 8 ラムダ式 コレクション編(2)リストの検索
  26. CloudFront (+ S3) + JWPLAYER で様々なデバイスのブラウザから動画をストリーミング再生する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です