Create a gist now

Instantly share code, notes, and snippets.

Embed
Node.jsだとタスクの実行はけっこう簡単,という話

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 の時のような面倒くさいこと は何も必要ない。

[^1]: 唯一の例外(?)は, package.json の中で coffee-help というコマンドを定義したこと だが,これも npm run の実行例を見せるためで,Node.js 界隈ではおそらく特別なことでもなんでもない。

これを上述の Slack メッセージへのレスポンスとして貼ったら,

https://cloudfoundry.slack.com/archives/C02FL4A2K/p1507023002000260?thread_ts=1506965543.000404&cid=C02FL4A2K

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 の出自が感じられる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment