Travis CI で時間のかかるコマンドを実行する
目的
C++ でコンパイル時計算を多用すると、ビルドだけで 10分以上かかってしまうことも珍しくない。
しかし、Travis CI では 10分間何も出力がないと強制終了となってしまう。
No output has been received in the last 10 minutes, this potentially indicates a stalled build or something wrong with the build itself. The build has been terminated
対応
途方に暮れていたら、なんと公式アカウントから直々にメンションをもらった。
@mogproject You can use the bash function "travis_wait" to lengthen the timeout; e.g., travis_wait CMD, or travis_wait 30 CMD
— Travis CI (@travisci) 2015, 2月 11
このような目的のために、travis_wait という bash の関数が用意されているらしい。
before_script: - travis_wait make build
こう書けば、20分間無出力の状態が続いても、Travis CI は待っていてくれる。
しかしそれでも時間が足りないと、やはりタイムアウトとなってしまう。
Still running (20 of 20): make build Timeout (20 minutes) reached. Terminating "make build" The command "travis_wait make build" failed and exited with 1 during . Your build has been stopped.
こんな場合は、以下のように待機時間(分)をパラメータに付け加えればよい。
before_script: - travis_wait 60 make build
これで、ビルドのタイムアウトが 60分に延長された。
References