小ネタです。
TravisCIで、ElixirとDockerを組み合わせてテストをしたかったのですが、併用しようとするとエラーが発生して現状では使えないようです。。
TravisCIのメンバの方にもちょっとお手伝いお願い出来ましたが事象解決には至りませんでした。
仕方なしに、Dockerではなく、プロセスをデーモン化してテスト実行しようとしましたが、TravisCIは、デーモン化したプロセスがテスト終了後にも生き残っていると最後に自動でKillして、終了コード[1]を返却する仕様のようです。
きちんとできてはいるけど、面倒くさいな。。と思いつつ、after_script
を利用して削除することにしました。
以下サンプルとなります。
travis.yml
language: elixir
elixir:
- 1.2.3
otp_release:
- 18.0
before_install:
- npm install kinesalite
- npm install aws-sdk
- export PATH=$PATH:node_modules/.bin
- node kinesalite.js &
- KINESALITE_PID=$!
- sleep 3
script:
- mix test
after_script:
- kill $KINESALITE_PID
以下のように、&
を使って起動したプロセスを$!
で取得します。
- node kinesalite.js &
- KINESALITE_PID=$!
そして、after_script
でkillする。。
Dockerでやりたい。。このやり方はポータビリティが低いと思います。
早くElixirとDocker両方使えるようにならないのかな、とサポートにメールを送り続けることにします。
本日は以上となります。