python - Python 在 GitHub Actions 上看不到环境变量
问题描述
我有一些连接到测试 Postgres 数据库的 pytest 测试。这些在当地运作良好。但是,在 GitHub 操作上,没有 Postgres DB,因此我必须禁用具有这些测试的整个模块。
根据文档,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:
,但它们都对 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 环境显示该变量CI
已按预期定义,并且actiontest.py 脚本成功检测到该变量。
如果您看到不同的行为,请在您的问题中包含一个完整的可重现示例,我们很乐意帮助您弄清楚发生了什么。
推荐阅读
- node.js - mongoose 中单个控制器上的多个模型值
- docker - 运行“docker-compose up”时出现错误“错误:yaml.scanner.ScannerError:此处不允许映射值”
- c# - 在 .NET Core 中将 HubContext 设为 null
- applescript - 日期选择器显示问题(主线程问题?)
- c - 如何限制用户输入非数字字符?
- reactjs - 设置 paddingTop: Constants.statusBarHeight trought StatusBar 组件,没有expo
- linux - 使用 SED 命令删除 Markdown 文件中的代码块
- jquery - 无法使用 jQuery 从下一个表单获取输入值
- node.js - 错误:连接丢失:服务器关闭了连接
- c# - ViewBag 值未显示在选择框中?