Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Jenkins环境中运行不同的tox命令?_Python_Jenkins_Tox - Fatal编程技术网

Python 如何在Jenkins环境中运行不同的tox命令?

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

我想为py.test使用不同的命令行参数,具体取决于环境:在本地运行时,应该只有默认参数,但在Jenkins上,我想添加
--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文件中