昨日は 葉桜js でした。
今回は客層からかテストとセキュリティの話が多かった。t_wada, malaさんの影響は大きい。 #葉桜JS
— Yosuke FURUKAWA (@yosuke_furukawa) April 14, 2014
僕のLT
t_wadaさんが来るということでテストっぽい話をしたくて、Docker Node Testerの話をしました。
Node.js v0.12 に関して
このブログで Node.js v0.12で変わることについて色々と紹介してきました。NANの話もそうですし、traicing apiとかsync child_processもそうです。
Node.js v0.12では他にもコアモジュールに色々とバグ修正やエンハンスが加わっています。
コアチームが互換性に配慮しているとはいえ、影響を受けてしまい、自分のモジュールが動かなくなることは考えられます。
そこで Docker Node Tester
Docker を使ってNode.jsのバージョン間でビルドしたイメージを作っておいて簡単にバージョンごとのテストを行うツールです。
How to use
インストールは下記のとおりです。
$ npm install dnt -g
.dntrc
っていう下記のようなファイルをプロジェクトのルートに作っておきます。
NODE_VERSIONS="\ master \ v0.11.9 \ v0.11.8 \ v0.10.22 \ v0.10.21 \ v0.8.26 \ " TEST_CMD="\ cd /dnt/ && \ npm install && \ node_modules/.bin/node-gyp --nodedir /usr/src/node/ rebuild && \ node_modules/.bin/tap test/*-test.js; \ "
この状態で sudo setup-dnt
を実行するとNODE_VERSIONSに記述したNode.jsのイメージを作成してくれます。
最後に sudo dnt
を実行すると下記のような結果が出ます。
これで、バージョン間のテストを実現できます。
注意点
まだ Mac の boot2dockerだとメモリ不足の影響でdocker環境構築に時間がかかったり、エラーになることがあります。(※僕はDigital OceanでUbuntuの環境を借りて実施しました。)
また、最新のDocker v0.10に Docker Node Testerが対応できてないので、今pull reqを投げて様子を見ているところです。既にDocker v0.10がインストールされているのであれば、僕のpull req内容を元に試してください。
pullreqがマージされたので、最新のdocker node tester v0.3.0 以降では docker v0.10サポートされました!!