2024-04-20 10:39:45 发布
网友
我非常了解passenv和setenv在毒素但我面临的情况是,我想取消一些变量的定义,使它们不包括在通配符passenv中。你知道吗
passenv
setenv
示例
[testenv] passenv = ANSIBLE_* # I how do I assure that ANSIBLE_INVENTORY is not passed?
引用文档:
tox will take care of environment isolation for you: it will strip away all operating system environment variables not specified via passenv.
也就是说,您只是没有提到不希望传递的变量。你知道吗
对于passenv,文档说:
You can override these variables with the setenv option.
由于一个未设置的shell变量看起来像一个空字符串,您可以尝试setenv到''所有您不想传递的变量。它可能工作,也可能不工作,这取决于代码如何使用这些变量,因为空env变量和未设置的env变量之间存在差异。你知道吗
''
我看不出有任何方法可以选择性地取消tox文档中的变量。我建议使用一些比ANSIBLE_*弱的通配符,这样它们就不会让您想要保持未设置的变量进入。你知道吗
ANSIBLE_*
另一种解决方案是在运行tox的shell中取消设置变量,以便tox进程无法访问和传递它们:
tox
#!/bin/sh unset ANSIBLE_KEYS_TO_KINGDOM tox "$@"
到目前为止,似乎不可能执行这样的unset,所以我在https://github.com/tox-dev/tox/issues/1387将其作为一个特性请求提出
有一个解决办法,但非常不便,我甚至不知道是否值得一提:
command = bash -c "unset ANSIBLE_INVENTORY; <original command>"
如您所见,这种方法根本不可扩展,并且可以维护毒素一个真正的负担。你知道吗
引用文档:
也就是说,您只是没有提到不希望传递的变量。你知道吗
对于
passenv
,文档说:由于一个未设置的shell变量看起来像一个空字符串,您可以尝试
setenv
到''
所有您不想传递的变量。它可能工作,也可能不工作,这取决于代码如何使用这些变量,因为空env变量和未设置的env变量之间存在差异。你知道吗我看不出有任何方法可以选择性地取消tox文档中的变量。我建议使用一些比
ANSIBLE_*
弱的通配符,这样它们就不会让您想要保持未设置的变量进入。你知道吗另一种解决方案是在运行
tox
的shell中取消设置变量,以便tox进程无法访问和传递它们:到目前为止,似乎不可能执行这样的unset,所以我在https://github.com/tox-dev/tox/issues/1387将其作为一个特性请求提出
有一个解决办法,但非常不便,我甚至不知道是否值得一提:
如您所见,这种方法根本不可扩展,并且可以维护毒素一个真正的负担。你知道吗
相关问题 更多 >
编程相关推荐