【TravisCI高速化】make時にオプションを付けたら超絶高速になった

More than 3 years have passed since last update.


はじめに


背景


  • TravisCIで以下のようなことを実行してみた


    • openCVのインストール

    • railsアプリの起動

    • 単体/受け入れテスト



  • ところが、openCVのインストールを当然ながら毎回するので、30分程度環境構築にかかってしまう

  • それでは使い物にならないため、改善できるところがないか考えてみた


改善


オプションの指定


  • make,make installに付けるオプションは-j2,-j4, -j8のようにすればジョブ数の指定ができる

  • 目安として$ make -j ${コア数 x 2}と上の記事で書いてあったのでコア数を確認


Travisのインスタンスのコア数


TravisCIに適したオプション


  • 他のサービスの.travis.ymlをいくつか覗いてみると、-j4や-j8と書かれていたものがちょこちょこ見られた

  • -j(ジョブ数制限なし=無制限)はシステムに影響を与える可能性があると書いてあったが、-j4, -j8, -jオプション付きでそれぞれ試してみた


    • 結果、-j4, -j8, -jに大差はなかった



  • 結論として、TravisCIではmakeのオプションは-j4,-j8を使うのがアンパイなのかもしれない


    • というかオプションなしでは遅すぎてCIどころじゃない




効果確認


  • openCVのインストールを含めた環境構築に30分程度かかっていたものが8〜10分でできるようになった

curl -sL https://github.com/Itseez/opencv/archive/2.4.5.zip > opencv.zip

unzip opencv.zip > $HOME/opencv.log
cd opencv-2.4.5
mkdir build
cd build/
cmake -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D WITH_1394=OFF -D ENABLE_OPENMP=ON ../
make -j4 #<= オプション追加
sudo make -j4 install #<= オプション追加
sudo ldconfig


~ただの宣伝~


  • 全国のSeleniumer必読

  • Seleniumerといっていますが、Selenium, SauceLabs, Travis, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください