You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程判断Python脚本是否运行在GitHub Action等CI测试环境

如何通过编程判断Python脚本是否运行在主流CI环境中

主流CI环境的标志性环境变量

各个CI服务都会设置专属的环境变量,这是最可靠的判断依据,几个常见CI的核心变量如下:

  • GitHub Actions:GITHUB_ACTIONS 会被设为 true,另外还有GITHUB_WORKFLOW、GITHUB_RUN_ID等辅助变量,但GITHUB_ACTIONS是最直接的判断标识
  • Travis CI:TRAVIS 固定设为 true,同时会伴随TRAVIS_BUILD_ID等变量
  • Circle CI:CIRCLECI 设为 true,CIRCLE_BUILD_NUM可作为辅助验证
  • 其他常见CI:GitLab CI的GITLAB_CI、Jenkins的JENKINS_URL(或BUILD_NUMBER)、Azure Pipelines的SYSTEM_TEAMFOUNDATIONCOLLECTIONURI

关于用户名的一致性

CI环境中的执行用户名没有统一标准,不同服务商甚至同一服务商的不同镜像都可能不一样。比如GitHub Actions默认用runner,Travis CI部分镜像用travis、部分用root,Circle CI常用circleci或root。靠用户名判断完全不靠谱,优先用专属环境变量。

Python脚本判断实现

可以写一个简单的函数,通过检查环境变量快速判断:

import os

def is_running_in_ci() -> bool:
    """判断是否处于任意CI环境"""
    ci_identifiers = [
        "GITHUB_ACTIONS",
        "TRAVIS",
        "CIRCLECI",
        "GITLAB_CI",
        "JENKINS_URL",
        "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"
    ]
    return any(os.getenv(var) for var in ci_identifiers)

def get_ci_provider() -> str | None:
    """识别具体的CI服务商"""
    if os.getenv("GITHUB_ACTIONS") == "true":
        return "GitHub Actions"
    elif os.getenv("TRAVIS") == "true":
        return "Travis CI"
    elif os.getenv("CIRCLECI") == "true":
        return "Circle CI"
    elif os.getenv("GITLAB_CI"):
        return "GitLab CI"
    elif os.getenv("JENKINS_URL"):
        return "Jenkins"
    elif os.getenv("SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"):
        return "Azure Pipelines"
    return None

# 测试示例
if __name__ == "__main__":
    if is_running_in_ci():
        provider = get_ci_provider()
        print(f"当前运行在{provider}环境中")
    else:
        print("当前未处于CI环境")

内容的提问来源于stack exchange,提问作者Nico Schlömer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:31:08