ToukaCloud の Bot (worker) で、依存 install・環境変数・外向き通信まで 含めた経路をひととおり確認するためのサンプル。
worker-hello との違いは「結果が Discord に見える」ことです。Bot トークンも
OAuth も要らず、サーバー設定 → 連携サービス → ウェブフックで URL を
1 つ作るだけで試せます。
| このサンプルが使うもの | |
|---|---|
| 依存 install | dayjs を 1 つだけ (init コンテナ + キャッシュ PVC を通る) |
| 環境変数 | WEBHOOK_URL を process.env から読む |
| 外向き通信 | HTTPS POST (Bot は egress 専用) |
| 常駐 | setInterval で動き続ける |
WEBHOOK_URL 未設定でも起動します。 送るはずだった内容をログに出す
dry-run になるので、URL を用意する前に「常駐すること」だけ先に確認できます。
- Bot 作成画面で 取得元 = Git から取得、リポジトリ URL に
https://github.com/toukaDC/worker-webhook-notify.git - 環境変数に
WEBHOOK_URL(Discord のウェブフック URL) を入れる - 作成 → ログタブに
[worker-webhook-notify] sentが出て、Discord に届く
環境変数は後から設定タブでも足せます (保存すると Bot が再起動します)。
リポジトリの直下ではなく、特定のディレクトリを Bot のコード root として 扱うこともできます。1 つのリポジトリに複数の Bot を置くときに使います。
your-repo/
├── bot-a/
│ ├── index.js ← ここが Bot A の root になる
│ └── package.json
└── bot-b/
├── index.js
└── package.json
作成画面の「サブディレクトリ」に bot-a と入れると、bot-a/index.js が
/app/src/index.js として起動します。指定した階層より上のファイルは
コンテナに入りません。
- 起動するのは コード root 直下の
index.jsです (サブディレクトリを 指定した場合はその直下) - 社内 GitLab (
gitlab.max3584.net) は使えません — 内部アドレスに 解決されるため SSRF ガードが拒否し、テナントの egress も届きません