首页 > 解决方案 > 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')按预期工作。

可能是什么问题呢?

标签: pythonpytestgithub-actionstox

解决方案


您没有向我们展示任何代码,但是如果我使用以下内容设置存储库.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 脚本成功检测到该变量。

如果您看到不同的行为,请在您的问题中包含一个完整的可重现示例,我们很乐意帮助您弄清楚发生了什么。


推荐阅读