Мой текущий рабочий процесс - это github PRs и Builds, протестированные на Travis CI, с тестированием токсинов и освещением в сообществе для кодирования.Команда управления Tox на основе переменной env
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
tox.ini
[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
Однако, Трэвис не проходит мои переменные окружения для выдвижных запросов, что делает мою отчетность покрытия потерпеть неудачу. Travis документация показывает это как решение:
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 это не работает, как токсикодендрон использует модуль подпроцесса питона и не если в команде (естественно) не признает.
Как запустить codeclimate-test-reporter только для сборок, а не для запросов на тягу на основе переменной TRAVIS_PULL_REQUEST? Должен ли я создать свой собственный скрипт и назвать это? Есть ли более разумное решение?
Файлы 'tox.ini' не понимают управления потоком (что вполне понятно, это файлы' .ini'). Создание пользовательского сценария с использованием логики - один из вариантов. Второй вариант - переместить функциональные возможности, связанные с CI, на '.travis.yml'. В конце дня «tox.ini» должен содержать логику, которая может и должна выполняться на каждой локальной локальной машине. ['pylint'] (https://github.com/PyCQA/pylint/blob/master/tox.ini) делает что-то подобное. 'coveralls' venv объявляется в ядре, но запускается путем входа в' .travis.yml'. –
Я думаю, чтобы заставить поток управления через bash работать, вам нужно, чтобы ток передал 'shell = True' в подпроцесс. Это жестко закодировано и зарыто довольно глубоко: https://github.com/tox-dev/tox/blob/85cce631a1bab5fe056ed2cbbcab49ebaf51b259/tox/session.py#L226 – RecursivelyIronic
Может ли что-то вроде '/ bin/bash -c' работать? – iScrE4m