Python 如何在Jenkins环境中运行不同的tox命令?
我想为py.test使用不同的命令行参数,具体取决于环境:在本地运行时,应该只有默认参数,但在Jenkins上,我想添加Python 如何在Jenkins环境中运行不同的tox命令?,python,jenkins,tox,Python,Jenkins,Tox,我想为py.test使用不同的命令行参数,具体取决于环境:在本地运行时,应该只有默认参数,但在Jenkins上,我想添加--junitxml=junit-{envname}.xml,这样测试结果就可以以良好的格式发布。 我从中知道,有一个特殊的[tox:jenkins]部分,如果定义了'jenkins\u URL'或'HUDSON\u URL'。现在我创建了简单的tox.ini文件: [tox] envlist = py27, py35 [tox:jenkins] commands = ech
--junitxml=junit-{envname}.xml
,这样测试结果就可以以良好的格式发布。
我从中知道,有一个特殊的[tox:jenkins]
部分,如果定义了'jenkins\u URL'
或'HUDSON\u URL'
。现在我创建了简单的tox.ini文件:
[tox]
envlist = py27, py35
[tox:jenkins]
commands = echo "We are in JENKINS!"
[testenv]
setenv =
PYTHONPATH = {toxinidir}:{toxinidir}/my_module
commands = python setup.py test
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/requirements_test.txt
并定义了JENKINS\u URL
环境变量:
export JENKINS_URL=true
我希望,如果我运行tox,那么我的原始命令将被echo
替换,但它不起作用,而是以执行原始命令结束。
有人能帮我解决这个问题吗?好的,我自己找到了解决方案:
[tox]
envlist = py27, py35
[testenv]
setenv =
PYTHONPATH = {toxinidir}:{toxinidir}/my_module
commands = py.test {env:CUSTOM_ARGS} ; <== use environment variable here
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/requirements_test.txt
你本来可以用的
像这样:
commands = py.test --mandatory-flag {posargs:--default-flag}
在詹金斯,你可以这样称呼tox:
export CUSTOM_ARGS="--junitxml=junit.xml"
tox -- --override-flag
请注意用两个破折号分隔的位置,即设置环境变量的确切位置。是jenkins文件还是jenkins setupafaik这应该在tox.ini文件中