Docker Node Testerを使ってNode.jsをバージョン毎にテストする #葉桜js

昨日は 葉桜js でした。


僕の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サポートされました!!