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

在GitHub Actions的Bash脚本中无法访问GitHub Secrets的问题

解决GitHub Actions脚本无法访问Secrets环境变量的问题

可能的原因及对应解决方法

1. Secrets名称大小写不匹配

GitHub Secrets是大小写敏感的,检查secrets.TEST_VALUE中的名称是否和仓库Secrets里的完全一致,包括大小写。比如仓库中存的是test_value而非TEST_VALUE,就会导致取值为空。

2. Fork仓库PR的安全限制

如果工作流触发自Fork仓库的Pull Request,GitHub为安全起见会自动屏蔽Secrets传递,防止恶意提交获取敏感信息。这种情况的处理方式:

  • 前往仓库Settings → Actions → General,找到Workflow permissions,开启Read and write permissions;同时在Pull request reviews部分设置允许来自fork的工作流访问Secrets(注意此操作存在安全风险,需谨慎评估)。

3. 环境变量传递异常(少见)

虽然bash脚本默认会继承父进程环境变量,但可以显式传递变量确保加载:
修改Actions步骤的run指令,直接将环境变量传入脚本:

steps:
- name: test-step
  env:
     test_value: ${{ secrets.TEST_VALUE }}
     test_value_2: SOME_VALUE
  run: |
     test_value=$test_value test_value_2=$test_value_2 bash ./test.sh

4. Secrets未配置到对应范围

确认TEST_VALUE存储在当前运行工作流的仓库Secrets中,而非组织Secrets或特定环境Secrets。如果使用环境专属Secrets,需要在步骤中指定环境:

steps:
- name: test-step
  environment: your-environment-name
  env:
     test_value: ${{ secrets.TEST_VALUE }}
     test_value_2: SOME_VALUE
  run: |
     bash ./test.sh

快速验证方法

先在Actions步骤中直接输出环境变量,排除脚本自身问题:

steps:
- name: test-step
  env:
     test_value: ${{ secrets.TEST_VALUE }}
     test_value_2: SOME_VALUE
  run: |
     echo "Directly output test_value: $test_value"
     bash ./test.sh

如果直接输出也为空,问题出在Secrets的配置或权限上;如果直接输出正常,再排查脚本的环境变量继承逻辑。

内容的提问来源于stack exchange,提问作者Kai-Eiji

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:32:34