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
我很困惑为什么 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