私の現在のワークフローは、toxテストpytestとコーデックメイトへのレポートカバレッジでTravis CIでテストされたgithub PRとBuildsです。env変数に基づくTox実行コマンド
[tox]
envlist = py33, py34, py35, pypy3, docs, flake8, nightly, pypy3.3-5.2-alpha1
[tox:travis]
3.5 = py35, docs, flake8
[testenv]
deps = -rrequirements.txt
platform =
win: windows
linux: linux
commands =
py.test --cov=pyCardDeck --durations=10 tests
[testenv:py35]
commands =
py.test --cov=pyCardDeck --durations=10 tests
codeclimate-test-reporter --file .coverage
passenv =
CODECLIMATE_REPO_TOKEN
TRAVIS_BRANCH
TRAVIS_JOB_ID
TRAVIS_PULL_REQUEST
CI_NAME
tox.ini
travis.yml
os:
- linux
sudo: false
language: python
python:
- "3.3"
- "3.4"
- "3.5"
- "pypy3"
- "pypy3.3-5.2-alpha1"
- "nightly"
install: pip install tox-travis
script: tox
しかし、トラヴィスは私のカバレッジ・レポートが失敗しますれ、プル要求のための私の環境変数を渡していません。トラヴィスのドキュメントではソリューションとしてこれを示しています
script:
- 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then bash ./travis/run_on_pull_requests; fi'
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./travis/run_on_non_pull_requests; fi'
しかし、TOXにこれはTOXは、サブプロセスのpythonモジュールを使用して、コマンド(自然)などあれば認識していないと動作しません。
コーデックリートテストレポーターはビルド専用で、TRAVIS_PULL_REQUEST変数に基づいたプルリクエストは実行できません。自分のスクリプトを作成して呼び出す必要がありますか?もっとスマートな解決策がありますか?
'tox.ini'ファイルはフロー制御を理解しません(これは理解できる、' .ini'ファイルです)。ロジックを使ってカスタムスクリプトを作成することも可能です。 2番目のオプションは、CI関連の機能を '.travis.yml'に移すことです。終わりに、 'tox.ini'には、各devローカルマシン上で実行されるべきロジックが含まれていなければなりません。 ['pylint'](https://github.com/PyCQA/pylint/blob/master/tox.ini)はそういったことをします。 'coveralls' venvはtoxで宣言されていますが、' .travis.yml'のエントリによってトリガされます。 –
私はbashを介して制御フローを作って動作させると思いますが、サブプロセスに 'shell = True'を渡すためにはtoxが必要です。それはハードコードされており、かなり深く埋まっています:https://github.com/tox-dev/tox/blob/85cce631a1bab5fe056ed2cbbababebeb51b259/tox/session.py#L226 – RecursivelyIronic
'/ bin/bash -c'のようなものが使えますか? – iScrE4m