Node.js だとタスクの実行はけっこう簡単,という話
この Gist は Cloud Foundry Advent Calendar 2017 の6日目の記事です。
この Advent Calendar の 前回の私の記事 では,Java の task について書いたが,今回は Node.js の task の話。
きっかけは,Cloud Foundry 本家の Slack の,このメッセージだった。
https://cloudfoundry.slack.com/archives/C02FL4A2K/p1506965543000404
dgangsta [Oct 3rd at 02:32] in #general
Does anyone have or can point to a working example of Tasks that use the cf run-task command? Ideally I am looking for something in NodeJS but the interweebs have come up with zero guidance. Cheers.
適当に調べて書いたのがこれ↓:
https://github.com/nota-ja/cf-nodejs-task-example
このコードは,task 向けの実装はほとんど何もしていない,普通のしょぼい Node.js アプリ 1 で, README.md が本体のようなものである。すなわち, Java の時のような面倒くさいこと は何も必要ない。
これを上述の Slack メッセージへのレスポンスとして貼ったら,
nota [2 months ago]
@dgangsta,
I've written a very quick & simple example.
https://github.com/nota-ja/cf-nodejs-task-example
Hope it helps.
Cloud Foundry 界隈の有名人である Dr. Nic から
これだけでは何なので,作った時の裏話を少しだけ。
これを作る時の肝だったのは,アプリの実行環境の PATH
がどうなっていて,そこにどんなコマンドがあるか。
#この例に限らず,Cloud Foundry で task を走らせる時全般の話かもしれない。
cf ssh
でアプリのコンテナーに入って調べたところ,環境変数 PATH
の値はこうなっていた:
PATH=/home/vcap/app/.heroku/node/lib/node_modules/npm/bin/node-gyp-bin:/home/vcap/app/node_modules/.bin:/home/vcap/app/.heroku/node/bin:/home/vcap/app/.heroku/node/bin:/home/vcap/app/.heroku/yarn/bin:/usr/local/bin:/usr/bin:/bin:/home/vcap/app/bin:/home/vcap/app/node_modules/.bin
/home/vcap/app
がアプリの HOME
なので,だいたいそれの下にある Node.js 関連のディレクトリーは一通り含まれていると考えて良さそう。 .heroku/*
が含まれているあたりに,Cloud Foundry の nodejs-buildpack の出自が感じられる。
Footnotes
-
唯一の例外(?)は, package.json の中で
coffee-help
というコマンドを定義したこと だが,これもnpm run
の実行例を見せるためで,Node.js 界隈ではおそらく特別なことでもなんでもない。↩