TL; DR:toxの条件付きコマンド? (TOX、トラヴィス-CI、およびカバーオール)
私は、githubの上でホストされている私のプロジェクトのためのCIを設定tox
を使用してtravis-ci
ています。ビルドの最後に、converalls
を実行して、カバレッジレポートをcoveralls.io
にプッシュします。私はこのコマンドを '条件付き'にしたいと思います。テストがtravis上で実行されている場合にのみ実行されます。それらがローカルマシン上で実行されているときではありません。これを実現させる方法はありますか?
詳細:
私がテストしようとしているパッケージは、Pythonパッケージです。私は次の「インフラストラクチャー」を使ってテストを設定しています:
- テスト自体は
py.test
です。 - CIスクリプティングは、言い換えれば、
tox
です。これにより、ローカルでテストを実行することができますが、それは私にとって非常に重要です。私は試運転が必要なたびにギブスに行く必要はありません。私もnumpy
とmatplotlib
を私のパッケージに入れています。だから、travis-ci
のテストサイクルの無限の数を実行するのは、私にとって無駄に思えるかもしれません。そのため、tox
を省略し、単に.travis.yml
を単独で使用することは選択できません。language: python python: 2.7 env: - TOX_ENV=py27 install: - pip install tox script: - tox -e $TOX_ENV
tox.ini
.travis.yml:[tox] envlist = py27 [testenv] passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH deps = pytest coverage pytest-cov coveralls commands = py.test --cov={envsitepackagesdir}/mypackage --cov-report=term --basetemp={envtmpdir} coveralls
- CIサーバは
関連するテストスクリプトtravis-ci
はこのような何かを見ています
このファイルを使用すると、ローカルでテストを実行できます。しかし、最終的coveralls
コールに、テストは、原則的に失敗すると:
py27 runtests: commands[1] | coveralls
You have to provide either repo_token in .coveralls.yml, or launch via Travis
ERROR: InvocationError: ...coveralls'
これは予想されるエラーです。 passenv
ビットは、travis
から必要な情報を送信してcoveralls
に書き込むことができ、この情報を提供するトラビスがなければ、コマンドは失敗するはずです。私はこれが結果をcoveralls.ioにプッシュすることを望んでいない。テストがtravis-ci
で発生している場合にのみcoveralls
を実行したいと思います。このコマンドを条件付きで実行する方法はありますか、同じ効果を達成するビルド構成を設定していますか?
私はすでにカバーオール部分を.travis.yml
に移動しようとしましたが、実行時にcoveralls
が適切な.coverage
ファイルを見つけられないと思われます。私はこの方向でさまざまな試みを行いましたが、上記の組み合わせ以外はcoveralls.io
への提出に成功しませんでした。以下は、私がtox
をローカルに実行したときに、.coverage
というファイルを私の元のツリーのルートフォルダに置いてしまうことを考えれば、私はうまくいくと思っていたことでした。
カバーオールには提出しません。io
language: python
python: 2.7
env:
- TOX_ENV=py27
install:
- pip install tox
- pip install python-coveralls
script:
- tox -e $TOX_ENV
after_success:
- coveralls
いいね!しかし実際の 'coveralls'パッケージとの名前の衝突を避けるために、スクリプト' run_coveralls.py'の名前を付けるほうが良いでしょう。 – alexanderlukanin13
'run_coveralls.py'がどのようにもっとも便利にインクルード/コールされるべきなのでしょうか?ファイル 'run_coveralls.py'を開くことができませんというエラーメッセージが表示されます:[Errno 2]そのファイルやディレクトリはファイルのように仮想環境にコピーされません。私はそれをパッケージの一部として含めるべきではないと思います。 –
自分で解決策を見つけることができたと思う。 'python {toxinidir}/run_coveralls.py'が動作するようです。 –