automation

Webサービスの連携を自動化する Huginn の紹介

More than 1 year has passed since last update.


社内で使っているWebサービス


  • Garoon

  • Redmine

  • Gitlab

  • Chatwork

  • Jenkins

  • etc...



サービスの連携を自動化したい


  • Garoonのワークフローが完了したら


    • → メールでロールアウト連絡

    • → Redmineをクローズ



  • GitlabでMergeRequestをマージしたら


    • → Redmineチケットを閉じる



  • 月次の作業を自動でRedminチケットを作る

etc...



自動化ツールをどう作る? スクリプトを書いてCRON実行?


Huginn



Huginn

https://github.com/cantino/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を作成できる



参考リンク



デモ



Huginnのメリット


  • Web上の操作で自動化処理を作成・編集できる

  • 各Agentの実行ログの記録ができる

  • Agent間で受け渡しされるイベントを確認したり、再実行させることが簡単

  • Agentを作るのが簡単


    • 実行されたらイベントを生成して出力するだけを作れば良い

    • JSON構造でメモリーを保持しておくことができる





まとめ


  • 作業の自動化をCRON実行するスクリプトよりはHuginnの方がよさそう

  • Agentを用意してしまえば、各自で好きなように工夫できる

  • ただし、


    • Web画面上の操作はちょっと分かり難いところもある

    • やりたいことに対して大袈裟すぎ?

    • 連携したいサービスのAPIが使いやすいのかどうか