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

如何在GitHub Actions中通过Python设置可跨步骤使用的环境变量

问题原因

在Python脚本中通过os.environ修改的环境变量仅对当前Python进程及其启动的子进程生效,GitHub Actions的每个工作流步骤都是独立的运行进程,无法读取其他进程内部的环境变量,因此需要通过GitHub Actions官方提供的跨步骤变量传递机制实现需求。

修复方案

GitHub Actions提供了$GITHUB_ENV环境文件,只要将需要共享的变量按变量名=值的格式追加写入该文件,后续所有步骤都会自动加载这些变量作为环境变量。

修改后的Python脚本示例

import os

# 原有逻辑不变,get_version_from_commit、commit_msg、app_name按你原有定义处理
new_ver = get_version_from_commit(commit_msg)
# 获取GITHUB_ENV文件路径
env_file_path = os.getenv("GITHUB_ENV")

if new_ver:
    if new_ver == "false":
        # 追加写入变量到GITHUB_ENV
        with open(env_file_path, "a", encoding="utf-8") as f:
            f.write("SHOULD_PUSH=0\n")
        print("Not pushing the image to k8s")
        exit(0)
    else:
        new_tag = app_name + ":" + str(new_ver)
        with open(env_file_path, "a", encoding="utf-8") as f:
            f.write(f"DOCKER_IMAGE_TAG={new_tag}\n")
            f.write("SHOULD_PUSH=1\n")
        print("New tag: " + new_tag)
        exit(0)

注意事项

  • 必须以追加模式a打开GITHUB_ENV文件,覆盖模式会清空之前步骤设置的所有环境变量
  • 每行变量写完后要加换行符\n,避免多个变量拼接导致格式错误
  • 修改完成后你原有的后续工作流步骤无需调整,直接通过${{ env.DOCKER_IMAGE_TAG }}、${{ env.SHOULD_PUSH }}即可读取对应值

内容的提问来源于stack exchange,提问作者Rumesh Madhusanka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:05