如何在GitHub Actions中通过动态键变量访问环境变量?
GitHub Actions 动态获取vars变量值的可行方案
GitHub Actions的表达式语法不支持直接通过vars.$动态键名这种方式访问属性,要实现动态获取vars中对应键的值,可采用以下两种可行方案:
方案一:纯表达式实现(无需额外工具)
利用toJSON和fromJSON将vars对象转为可通过方括号语法访问的结构,直接通过动态键名取值:
- name: 动态获取vars值并写入环境变量 run: echo "P_SCHEMA=${{ fromJSON(toJSON(vars))[v_db_schema] }}" >> $GITHUB_ENV
原理:toJSON(vars)将vars对象序列化为JSON字符串,fromJSON再将其转回可访问的对象,最后通过[v_db_schema]传入动态键名完成取值,最终把结果写入环境变量供后续步骤使用。
方案二:Shell脚本结合jq解析
如果需要更复杂的处理逻辑,可借助jq工具解析JSON格式的vars:
- name: 动态获取vars值并写入环境变量 env: ALL_VARS: ${{ toJSON(vars) }} DB_SCHEMA_KEY: ${{ v_db_schema }} run: | # 用jq解析JSON,通过动态键名提取对应值 P_SCHEMA=$(echo "$ALL_VARS" | jq -r ".\"$DB_SCHEMA_KEY\"") echo "P_SCHEMA=$P_SCHEMA" >> $GITHUB_ENV
注意:大多数GitHub官方runner镜像已预装jq,若使用自定义镜像需确保已安装该工具。
关键注意事项
- 确保
v_db_schema变量的值是vars中已存在的有效键名,否则会返回空值。 - 方案一更简洁高效,优先推荐;方案二更灵活,适合复杂场景。
内容的提问来源于stack exchange,提问作者ChzDz
相关产品推荐
相关产品推荐

