如何解决Python 在 GitHub Actions 上看不到环境变量
我有一些连接到测试 Postgres 数据库的 pytest 测试。这些在本地运行良好。但是,在 GitHub 操作中,没有 Postgres 数据库,因此我必须禁用具有这些测试的整个模块。
根据 the docs,CI Always set to true.
所以我所要做的就是检查 CI env-var,如果它存在并设置,则禁用测试模块:
if os.getenv('CI'):
pytest.skip("No Postgresql on GH Actions CI/CD",allow_module_level=True)
不起作用。
我尝试手动设置它,通过 env:
手动设置其他 env-vars,但它们都对 Python 不可见。通过否定上述测试在本地禁用模块 not os.getenv('CI')
按预期工作。
可能是什么问题?
解决方法
您没有向我们展示任何代码,但如果我使用以下 .github/workflows/environment.yml
设置存储库:
---
name: "Environment test"
on:
push:
workflow_dispatch:
jobs:
show_environment:
name: "Show environment variables"
runs-on: ubuntu-latest
steps:
- name: "Show environmetn variables"
run: |
env
python_test:
name: "Reproduce behavior from https://stackoverflow.com/q/65382013/147356"
runs-on: ubuntu-latest
steps:
- name: "Checkout repository"
uses: actions/checkout@v2
- name: "Set up python"
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: "Run python script"
run: |
python actiontest.py
并将此 actiontest.py
包含在存储库中:
import os
if os.getenv('CI'):
print('Looks like GitHub!')
else:
print('Maybe running locally?')
这一切似乎都按照文档进行。 show environment 显示 CI
变量按预期定义,并且 actiontest.py script 成功检测到该变量。
如果您看到不同的行为,请在您的问题中提供一个完整的可重现示例,我们很乐意帮助您弄清楚发生了什么。
,明白了。我正在使用 tox 来运行测试等。结果是 tox 不会复制父环境,除非通过 passenv
指令告诉它。这是清除它的 SO answer。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。