社内で使っているWebサービス
- Garoon
- Redmine
- Gitlab
- Chatwork
- Jenkins
- etc...
サービスの連携を自動化したい
- Garoonのワークフローが完了したら
- → メールでロールアウト連絡
- → Redmineをクローズ
- GitlabでMergeRequestをマージしたら
- → Redmineチケットを閉じる
- 月次の作業を自動でRedminチケットを作る
etc...
自動化ツールをどう作る? スクリプトを書いてCRON実行?
Huginn
- 単体の機能(Agent)を組み合わせて自動化処理を構築できるWebサービス
- Webサイトを読み取ったり、イベントを受けて何らかの処理を実行できる
- 似たものとして、Yahoo! Pipes(閉鎖)、IFTTT
- Ruby on Rails + MySQL or PostgreSQL
Huginn Agent
入力系
Twitterの投稿を取得 / RSSフィードを読み込む / WebHookを受け取る
変換系
CSVをパース / 条件に応じて継続・停止
出力系
メールを送信 / Webページを更新 / HTTP POSTする / Twitterに投稿
まずはやりたいこと
- Garoonワークフローが完了したら
- メールに送信
- Chatworkに投稿
Garoonから情報を取得するAgentが必要
作りました
Huginn Garoon Agents
https://github.com/namutaka/huginn_garoon_agents
- Ruby Gemとして作成
- Huginnにはプラグイン的に組み込む
- とりあえずは、Garoon ワークフローを取得できるところまで
- huginn_agent GemをつかってSkeltonを作成できる
参考リンク
- Garoon API 仕様書
- kwappaさんの Garoon API Ruby client
- Huginn Agentの作り方ドキュメント
- Huginn Agent作成補助モジュール
デモ
Huginnのメリット
- Web上の操作で自動化処理を作成・編集できる
- 各Agentの実行ログの記録ができる
- Agent間で受け渡しされるイベントを確認したり、再実行させることが簡単
- Agentを作るのが簡単
- 実行されたらイベントを生成して出力するだけを作れば良い
- JSON構造でメモリーを保持しておくことができる
まとめ
- 作業の自動化をCRON実行するスクリプトよりはHuginnの方がよさそう
- Agentを用意してしまえば、各自で好きなように工夫できる
- ただし、
- Web画面上の操作はちょっと分かり難いところもある
- やりたいことに対して大袈裟すぎ?
- 連携したいサービスのAPIが使いやすいのかどうか