kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

n8n.io 入門 : IFTTT のようなワークフローを構築しよう

「n8n.io」を使うと GitHub / Slack / Google Sheets など多くのサービス(ドキュメントを見ると 240 以上もインテグレーションできる!)を組み合わせて自由に「ワークフロー」を構築できる.関連サービスで言えば IFTTT のような感じ!例えば IFTTT Pro に課金せずにセルフホスティングできたりする.今回は「n8n.io 入門」を目的として Mac で Docker を使って「n8n.io」を試す.現状だと Docker と npm (npx) で試せる.なお,SaaS として使える「n8n.cloud」もある(最近まで coming soon になっていた).

n8n.io

n8n.io 入門 : 完成形

今回は「GitHub リポジトリに対する Star⭐/ Unstar⭐をトリガーに Slack 通知とコマンド実行に条件分岐をするワークフロー」を構築して「n8n.io」に入門する.完成形を以下に載せておく.実際に Star⭐の通知を受けられる仕組みを構築できると便利そう.

f:id:kakku22:20210101191321p:plain

1. 起動する

Quickstart に載っている通り,Docker を使ってローカル環境を起動する.1点ポイントがあり n8n start--tunnel オプションを付ける.GitHub などの Webhook でトリガーするためにインターネット側からローカル環境に接続できるようにする必要がある.ドキュメントにも書いてある通り,--tunnel オプションは「ローカル環境」として気を付けて使う.

$ docker run -it --rm \
    --name n8n \
    -p 5678:5678 \
    -v ~/.n8n:/root/.n8n \
    n8nio/n8n \
    n8n start --tunnel

docs.n8n.io

docker run コマンドで「n8n.io」を起動してから http://localhost:5678/ にアクセスをすると,以下のようにワークフロー画面を表示できるようになる.簡単!そして UI も見やすく実装されている.

f:id:kakku22:20210101191131p:plain

2. トリガー設定をする

さっそくトリガーを設定していく.画面右上にある + アイコンを押して,Triggergithub と検索すると GitHub Trigger を選択できるようになる.分類としては以下の通り.本当にインテグレーションが多くある.

  • Regular : アクション
  • Trigger : トリガー
  • All : 全て

f:id:kakku22:20210101191146p:plain

別途準備しておいた GitHub の Personal access tokens を使って Webhook の設定をする.Events には star 以外に issuepull_requestpush などを選べる.

  • Authentication : Access Token
  • Repository Owner : kakakakakku
  • Repository Name : redash-hands-on
  • Events : star

f:id:kakku22:20210101191202p:plain

トリガー設定を完了すると,ワークフロー画面に表示される.

f:id:kakku22:20210101191217p:plain

3. トリガー設定を確認する

この時点で動作確認をする.今回はワークフロー名を playground として保存して,画面下にある Execute Workflow ボタンを押すと待機状態になる.実際に kakakakakku/redash-hands-on リポジトリに Star⭐をすると,GitHub Trigger 上に と表示される.GitHub Trigger をクリックすると「レスポンスボディ」など詳細に確認できる.

f:id:kakku22:20210101191232p:plain

4. 条件分岐を設定する

次に IF を使って条件分岐を設定する.「n8n.io」の便利な点は「レスポンスボディ」の値を使って柔軟に条件を設定できるところで,今回は GitHub Trigger のレスポンスから body.action の結果を取得して created であれば Star⭐と判断する.Unstar⭐の場合は deleted という値になる.

f:id:kakku22:20210101191248p:plain

最終的に body.action (Equal) created という条件にする.

f:id:kakku22:20210101191304p:plain

5. Slack 通知とコマンド実行を設定する

最後は Star⭐の場合に「Slack 通知 (Slack)」を設定する.Unstar⭐の場合に「コマンド実行 (Execute Command)」を設定する.特に意味はなく「n8n.io」を試すために設定した.詳細は割愛する.同じように画面下にある Execute Workflow ボタンを押せば動作確認できる.

f:id:kakku22:20210101191321p:plain

まとめ

今回は簡単なワークフローを構築して「n8n.io」に入門した.便利!もっと便利に使うために以下のアクションは気になる!

「n8n.io」の実装は GitHub リポジトリに公開されているし,デフォルト設定では SQLite にデータを格納しているし(実際に ~/.n8n/database.sqlite を確認できる),コードを読むネタとしても使えそう.引き続き「n8n.io」を試していくぞー!

github.com