LoginSignup
7
4

More than 5 years have passed since last update.

小ネタ TravisCIでデーモンプロセスを起動してテスト終了時にKILLする

Last updated at Posted at 2016-03-30

小ネタです。

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両方使えるようにならないのかな、とサポートにメールを送り続けることにします。


本日は以上となります。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4