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

如何在GitHub工作流中读取脚本内添加的环境变量?

问题

我在tmp.py脚本中编写了以下代码:

os.environ["VERSION"] = "Version 1.1.1.2.2.3"
print(os.system('env')) #prints all env included above one

执行该脚本时能打印出包含上述变量在内的所有环境变量,但在GitHub工作流的后续步骤中尝试读取该变量时输出为空:

- name: Run script
  run: python3 tmp.py

- name: print env var
  if: always()
  run: |
    echo ${{ env.VERSION  }} #Blank, expected the value "Version 1.1.1.2.2.3"

查阅GitHub文档得知,{{ env.APP_VERSION }}这类语法仅适用于工作流中定义的环境变量。我尚未尝试Job.<job_id>.env方式,认为其与作业环境相关,请问如何在工作流中获取脚本内设置的VERSION变量值?

解决方案

GitHub Actions的每个步骤都是独立进程,脚本内设置的环境变量仅在当前进程生效,无法直接传递到后续步骤。要实现变量跨步骤传递,可采用以下几种方法:

方法1:写入GITHUB_ENV文件(推荐)

GitHub Actions支持通过写入$GITHUB_ENV文件来定义后续步骤可用的环境变量。修改你的Python脚本:

import os

with open(os.environ['GITHUB_ENV'], 'a') as env_file:
    env_file.write('VERSION=Version 1.1.1.2.2.3\n')

修改后,后续步骤即可通过${{ env.VERSION }}或$VERSION正常读取该变量。

方法2:通过工作流命令输出变量(已废弃,仅兼容旧版Runner)

在Python脚本中用指定格式输出变量,让Actions捕获:

print(f'::set-env name=VERSION::Version 1.1.1.2.2.3')

注意:该命令已被官方标记为废弃,优先使用方法1。

方法3:写入临时文件,后续步骤读取内容

在脚本中将变量值写入临时文件:

with open('version.txt', 'w') as f:
    f.write('Version 1.1.1.2.2.3\n')

后续步骤通过读取文件获取变量:

- name: print env var
  if: always()
  run: |
    VERSION=$(cat version.txt)
    echo $VERSION

内容的提问来源于stack exchange,提问作者Vipin Chaudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:31:05