「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 入門 : 完成形
今回は「GitHub リポジトリに対する Star⭐/ Unstar⭐をトリガーに Slack 通知とコマンド実行に条件分岐をするワークフロー」を構築して「n8n.io」に入門する.完成形を以下に載せておく.実際に Star⭐の通知を受けられる仕組みを構築できると便利そう.
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
docker run
コマンドで「n8n.io」を起動してから http://localhost:5678/
にアクセスをすると,以下のようにワークフロー画面を表示できるようになる.簡単!そして UI も見やすく実装されている.
2. トリガー設定をする
さっそくトリガーを設定していく.画面右上にある +
アイコンを押して,Trigger で github と検索すると GitHub Trigger を選択できるようになる.分類としては以下の通り.本当にインテグレーションが多くある.
Regular
: アクションTrigger
: トリガーAll
: 全て
別途準備しておいた GitHub の Personal access tokens を使って Webhook の設定をする.Events
には star
以外に issue
や pull_request
や push
などを選べる.
Authentication
:Access Token
Repository Owner
:kakakakakku
Repository Name
:redash-hands-on
Events
:star
トリガー設定を完了すると,ワークフロー画面に表示される.
3. トリガー設定を確認する
この時点で動作確認をする.今回はワークフロー名を playground
として保存して,画面下にある Execute Workflow
ボタンを押すと待機状態になる.実際に kakakakakku/redash-hands-on
リポジトリに Star⭐をすると,GitHub Trigger 上に ①
と表示される.GitHub Trigger をクリックすると「レスポンスボディ」など詳細に確認できる.
4. 条件分岐を設定する
次に IF を使って条件分岐を設定する.「n8n.io」の便利な点は「レスポンスボディ」の値を使って柔軟に条件を設定できるところで,今回は GitHub Trigger のレスポンスから body.action
の結果を取得して created
であれば Star⭐と判断する.Unstar⭐の場合は deleted
という値になる.
最終的に body.action (Equal) created
という条件にする.
5. Slack 通知とコマンド実行を設定する
最後は Star⭐の場合に「Slack 通知 (Slack)」を設定する.Unstar⭐の場合に「コマンド実行 (Execute Command)」を設定する.特に意味はなく「n8n.io」を試すために設定した.詳細は割愛する.同じように画面下にある Execute Workflow
ボタンを押せば動作確認できる.
まとめ
今回は簡単なワークフローを構築して「n8n.io」に入門した.便利!もっと便利に使うために以下のアクションは気になる!
Regular
: アクションTrigger
: トリガー
「n8n.io」の実装は GitHub リポジトリに公開されているし,デフォルト設定では SQLite にデータを格納しているし(実際に ~/.n8n/database.sqlite
を確認できる),コードを読むネタとしても使えそう.引き続き「n8n.io」を試していくぞー!