os.environ Jenkins 中的变量正在返回 None

os.environ variables in Jenkins are returning None

我很困惑为什么 Jenkins 不能识别我的环境变量。

我在 Jenkins 作业的 /configure 屏幕的常规部分设置了一个名为 VAR_TEST 的字符串参数。我在 Build shell 中包含 env 并且我看到 VAR_TEST 在控制台输出中被列为环境变量,但是当我的 python 代码 运行s,返回None

我已经按照相关 SO 问题中的建议尝试了 .ini、.env 和 Jenkinsfiles,但没有成功。我也尝试了一些 Jenkins 插件,但没有成功。

Python代码:

variable_test = os.getenv['VAR_TEST']

詹金斯控制台:

JENKINS_HOME=/opt/bitnami/apps/jenkins/jenkins_home
VAR_TEST=1,164,169
MAIL=/var/mail/tomcat
SASL_CONF_PATH=/opt/bitnami/common/etc
LANGUAGE=en_US.UTF-8
GIT_TEMPLATE_DIR=/opt/bitnami/git/share/git-core/templates
USER=tomcat
CI=true
...
{blah blah blah}
...
WORKSPACE_TMP=/opt/bitnami/apps/jenkins/jenkins_home/workspace/MY_PROJECT@tmp
+ sudo pytest -m login --headless --junit-xml=report.xml --html=index.html --maximize-window --save-screenshot --env=qa
============================= test session starts ==============================
platform linux -- Python 3.9.0, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: /opt/bitnami/apps/jenkins/jenkins_home/workspace/MY_PROJECT
plugins: xdist-2.2.1, forked-1.3.0, seleniumbase-1.61.0, ordering-0.6, html-2.0.1, metadata-1.11.0, rerunfailures-9.1.1
collected 108 items / 2 errors / 81 deselected / 25 selected

==================================== ERRORS ====================================
_ ERROR collecting my_stuff/tests/test_stuff/test_env_variables_so.py _
my_stuff/tests/test_stuff/test_env_variables_so.py:21: in <module>
    var_test = os.getenv('VAR_TEST').split(",")
E   AttributeError: 'NoneType' object has no attribute 'split'

当我在 PyCharm 中本地 运行 这段代码时,我只是在编辑配置...视图中列出了环境变量,代码 运行s 没有问题。但是,在 Jenkins 中它不是 运行ning。

在 运行 你的脚本之前,你需要 export 变量以便其他 shell 可以找到它们

FOO="bar"
export FOO

或模糊执行安全性较低但打字安全性更高的单行
(Why not to export variables on the same line you assign them?)

export FOO="bar"

我在这里找到了答案:

pytest

之前设置环境变量

示例: FOO=$FOO pytest -m test_foo