これはなに
ruboty-githubというRubotyプラグインを作っているのでご紹介。
※ r7kamura/ruboty-githubをForkしたもの。
Rubotyとは
Ruby + Bot = Ruboty.
Rubotyとは、Ruby製のbotフレームワークです。 SlackやChatWorkでの会話、redisやGoogle Spreaadsheetでのデータ保持、各種APIへの接続をすることができます。 また、Ruboty用プラグイン(RubyGem)を追加することで好きな機能を追加することができます。
Rubotyが反応してレスポンスを返すまで
- 外部サービスで発生したイベントがAdapterに入る
- イベントはMessageとしてHandlerへ
- 正規表現でMessegeに対応するActionsをマッチしてActionsへ
- APIをコールしたりBrainsを使ってデータを保持したりしてReply messageを作成
- HandlerはActionsの返り値をMessageに返す
- MessageがAdapterにレスポンス
ruboty-githubとは
RubotyからGitHub APIをコールしていろいろやるプラグインです。
なぜ作っているのか
着想
- 人間は忘れる生き物
- 人間は間違える生き物
- 同じことを何度もやるのは苦痛
どうするか
- 人間がやることをラップして簡単に
- 人間がやらなくていいことは自動化
できること
- Branch
- 作成
- Pull Request
- 作成
- マージ
- Issue
- 作成
- Close
- Release
- 作成
- リリース一覧を取得
- 最新のリリースバージョンを取得
- 最新のリリースとmasterの差分を取得
- Commit
- Commit間の差分を取得
たとえば
リリースを作成
リリース一覧の取得
最新のリリースバーションを取得
工夫したところ
- GitHub organization名を省略できるように
- リリースタグのprefixを指定してvalidationをかけるように
- リリース作成時に差分に含まれるPull Requestをdescriptionに記載できるように
まとめ
DevOpsにチャットツールを使うChatOpsを強化することで人的ミスを減らし、継続的なアプリケーション開発/運用に貢献していきたいです。