GitHub Actions能否读取或cat $GITHUB_ENV文件?
GitHub Actions中读取$GITHUB_ENV/$GITHUB_OUTPUT的问题解析
为什么cat $GITHUB_ENV会输出空内容
$GITHUB_ENV是GitHub Actions用于临时传递环境变量的中间文件,机制如下:
- 当你在某个step中向$GITHUB_ENV写入内容后,该step执行结束时,Actions引擎会读取这个文件的内容,将变量注入到后续step的环境中。
- 完成处理后,$GITHUB_ENV文件会被清空(或替换为新的空文件),所以后续step执行
cat $GITHUB_ENV只能得到空输出。
能否直接cat $GITHUB_ENV和$GITHUB_OUTPUT?
- $GITHUB_ENV:仅能在写入该文件的同一个step内cat到内容,step结束后文件被清空,后续step无法读取到之前写入的内容。
- $GITHUB_OUTPUT:和$GITHUB_ENV机制完全一致,仅在写入的同一个step内可以cat到内容,step结束后Actions处理文件并清空,后续step无法通过cat读取。
除直接调用变量外的读取方式
在写入的同一个step内读取文件内容
如果需要查看刚写入的内容,可以在同一个step里完成写入和读取:- name: 写入并查看GITHUB_ENV内容 run: | echo "OUTPUT1='odoyle rules'" >> $GITHUB_ENV cat $GITHUB_ENV # 此处能看到刚写入的内容打印整个环境变量集合
若要在后续step查看所有已加载的环境变量,直接使用env命令打印全部环境变量,或通过过滤定位目标变量:- name: 打印所有环境变量 run: env # 或者过滤特定变量 - name: 打印目标环境变量 run: env | grep OUTPUT1读取$GITHUB_OUTPUT的替代方式
对于$GITHUB_OUTPUT,若要在后续step获取输出值,需通过step ID引用:${{ steps.step_id.outputs.output_key }};如果要在写入的step内查看内容,同样在写入后立即cat:- name: 写入并查看GITHUB_OUTPUT内容 id: my_step run: | echo "output_key=output_value" >> $GITHUB_OUTPUT cat $GITHUB_OUTPUT
内容的提问来源于stack exchange,提问作者Max Cascone
相关产品推荐
相关产品推荐

