在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
相关产品推荐
相关产品推荐

