Help us understand the problem. What is going on with this article?

不要な pip install をスキップしてCIの高速化

More than 3 years have passed since last update.

やりたいこと

TravisCIのテストが遅いので高速化したい。
ログを眺めていると、pip installでけっこう時間がかかっている。特に numpyのインストールが遅い。
また、インストール済みのパッケージを毎回処理しているのも、せっかくキャッシュディレクトリに指定しているのでスキップしたい。

環境

  • TravisCIを使っている
    • python 2.7.9 (現時点)
    • .pip-cache、virtualenv ディレクトリをキャッシュさせている
travis.yml
python:
- 2.7.9
cache:
  apt: true
  directories:
  - "$HOME/.pip-cache/"
  - "$HOME/virtualenv/python2.7.9"
before_install:
- sudo apt-get update
- sudo apt-get install XXX #必要なパッケージインストール
install:
- pip install -r requirements.txt --download-cache $HOME/.pip-cache
# 以下省略

やったこと

pip freeze と比較して差分だけインストール処理が走るように install の項目を変更する

travis.yml
install:
- pip freeze | comm -13 - requirements.txt | grep -v '^#' | xargs pip install --download-cache $HOME/.pip-cache
  • 普通に diff コマンド使おうとしたがMacだと動いたけど、Travis環境では動かなかった bash限定の方法みたい?
    • diff <(pip freeze | sort) <(cat requirements.txt | sort) | grep '^> ' | sed 's/^> //'
    • comm コマンドは今回初めて知った。便利。
  • pip freeze でコメント行が出てくることがあったので、 grep -v '^# を入れている

課題

git リポジトリから tag 指定でインストールしている行が、pip freezeではコミットのハッシュ値が表示されるので、必ず差分になってしまう。

  • requirements.txt
    • -e git://github.com/Example/hoge.git@tag#egg=hoge
  • pip freeze
    • -e git://github.com/Example/hoge.git@ba34106b63048ba3d43140a09bd4f99140609da6#egg=hoge-origin/tag

まぁ、一番遅い numpy がスキップされたからいいかな?と思ってる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした