Github Actions如何跨步骤访问shell脚本设置的环境变量
跨步骤访问GitHub Actions中脚本写入的环境变量方法
你已经用了GitHub Actions官方推荐的$GITHUB_ENV做跨步骤变量传递,只需要补全逻辑漏洞、按规范读取即可:
- 补全脚本的写入逻辑
你当前的脚本只在发现漏洞的else分支写了GITHUB_ENV,无漏洞的if分支没有写入,会导致无漏洞场景下变量不存在。修正后的脚本片段:#!/usr/bin/env bash ... test_result_emoji=":boom:" critical_vulnerabilities_found="false" if [ $critical2 -eq 0 ] && [ $high2 -eq 0 ]; then test_result_emoji=":eight_spoked_asterisk:" # 补全无漏洞场景的变量写入 echo "CRITICAL_VULNERABILITIES_FOUND=${critical_vulnerabilities_found}" >> $GITHUB_ENV else critical_vulnerabilities_found="true" echo "CRITICAL_VULNERABILITIES_FOUND=${critical_vulnerabilities_found}" >> $GITHUB_ENV fi ... - 后续步骤直接读取环境变量
所有写入$GITHUB_ENV的变量,会被GitHub Actions自动注入到同Job下后续所有步骤的运行环境中,直接通过$变量名调用即可,对应步骤写法:- name: Developers run: | echo $CRITICAL_VULNERABILITIES_FOUND
常见异常排查
如果按上述操作还是拿不到值,检查两个配置:
- 确认运行脚本的步骤和读取变量的步骤属于同一个Job,
$GITHUB_ENV的作用域仅限单个Job,跨Job传递变量需要使用Job outputs配置 - 确认脚本可以正常执行:如果脚本没有可执行权限,要么先执行
chmod +x ./prerequisite.sh给权限,要么直接用bash ./prerequisite.sh的方式调用,避免脚本没跑起来导致写入逻辑没执行
内容的提问来源于stack exchange,提问作者Jananath Banuka
相关产品推荐
相关产品推荐

