Jenkins中的os.environ变量返回None



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

我在Jenkins作业的/configure屏幕的General部分设置了一个名为VAR_TEST的String参数。我已经在Build shell中包含了env,我看到VAR_TEST在控制台输出中被列为环境变量,但当我的python代码运行时,None会被返回。

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

Python代码:

variable_test = os.getenv['VAR_TEST']

Jenkins控制台:

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中本地运行此代码时,我只需在Edit Configurations。。。视图,代码运行时没有问题。然而,它并没有在詹金斯运行。

我在这里找到了答案:https://stackoverflow.com/a/37396406/6321777

设置环境变量BEFOREpytest

示例:FOO=$FOO pytest -m test_foo

在运行脚本之前,您需要export变量,以便其他shell可以找到'em

FOO="bar"
export FOO

或者执行不太安全,但打字更安全的单行
(为什么不在分配变量的同一行导出变量?(

export FOO="bar"

最新更新