Deno版の june29/takanawa です。オンプレの環境にScrapboxを建てていて、GASが使えないので作成。
まだまだ実験版なので、設定ファイルの渡し方など大きく変更する可能性があります。 設定ファイル config.ts
はなくすかもしれません。
Docker Imageに設定ファイル config.ts
を内蔵してデプロイするようにしています。もし設定ファイルとかが嫌で環境変数で指定したければ、config.ts
の値をすべて環境変数から取得するようにしてください。
config.ts
に設定を記述します。config.ts.example
からコピーして使うと簡単です。server.port
: サーバーのポート番号scrapbox.host
: Scrapboxのホスト名。https://scrapbox.io
など。scrapbox.project
: Scrapboxのプロジェクト名。mactkg-pub
など。scrapbox.cookie
: (任意) 鍵のついたScrapboxにアクセスする際のクッキー。connect.sid
の値を入れてください。(取扱注意。)slack.webhook
: SlackのIncoming Webhookの値を入れてください。external.ruleScrapboxUrl
: (任意) マッチするルールを書いたCSVへのURLを入れるところです。後述。
- ローカルで
docker
が動くように用意してください。 make run
で動きます。ngrok
などのツールを使ってインターネットへ公開し、試してみるといいでしょう。- Docker使っていないひとは、
deno
が動くようにして、deno run ./src/server.ts
します。
make build
でDocker ImageをBuildするので、そのままデプロイすればうごきます。ポートは8080に指定してあります。
- MakefileにはGCPのCloud Runへデプロイするタスクが設定してあります。これを使えば、Cloud Runにデプロイできます。
- GCPのプロジェクトを作って、プロジェクト名をメモしておきます。
- 次の環境変数を設定してください。
GCP_PROJECT
=GCPのプロジェクト名GCP_CLOUD_RUN_SERVICE_NAME
: Cloud Runのサービスの名前GCP_IMAGE_NAME
=デプロイするDocker Imageを上げる先。 きっとgcr.io/${GCP_PROJECT}/${GCP_CLOUD_RUN_SERVICE_NAME}
$ make deploy_cloud_run
- 誰かいい感じの
app.config
求む!
基本 june29/takanawa のように動作しますが、処理ルールの書き方が違います。
Scrapboxに任意の設定用ページを作り、そのページに処理ルールを表形式で記述してください。(例: https://scrapbox.io/mactkg-pub/shibaura_config_for_test )
external.ruleScrapboxUrl
には、その表のCSVへのリンクを入れておきます。(例: https://scrapbox.io/api/table/mactkg-pub/shibaura_config_for_test/settings.csv )
shibaura
に通知があったら、 external.ruleScrapboxUrl
に処理ルールを取得しにいきます。5秒以内に処理ルールを取得していたら、新たに取得せず、これまでと同じルールを使うようにします。
表に関する取り決めは以下のとおりです。いまのところ、それぞれの列の順番は特に考慮しないです。
title
列: タイトルがこの文字列にマッチしたときに通知diff
列: 変更行がこの文字列にマッチしたときに通知body
列: 文章全体がこの文字列にマッチしたときに通知channel
列: 通知したいチャンネル
- config.tsはやめたらいいんじゃない?
- なるべく環境変数で設定したほうがいいんじゃないかな…。
- でも、Image指定するだけでいい感じに動くのはこれはこれでおもしろい。
- 柔軟に設定したい部分は基本的に
external.ruleScrapboxUrl
にあるわけだし。 - どうしても設定したければ環境変数でもできる。
- 環境変数でも、
config.ts
でもできるっていうのが管理上よくないかもしれない。 - というかこういうのこそScrapboxでやるべき。
- 環境変数でも、
- Scrapbox以外もできたほうが楽しいよね。
- プロジェクトが結構汚いので整理したい。
- eslint入れてみたけどそんなに使ってないし。
- docker-compose.ymlもいらなそう。
- コードももう少しきれいにできる。