GitHub Actions中credentials.json文件为空问题求助
解决GitHub Actions中Google Sheets凭证文件为空的问题
可能的原因及对应解决方案
1. Shell环境不兼容导致命令执行失败
如果你的工作流使用Windows runner,默认shell是PowerShell,而你写的echo | tr是bash语法,会导致命令无法正确解析,最终生成空文件。
解决方法:在保存凭证的step中指定使用bash shell,同时用printf替代echo来处理JSON特殊字符:
- name: Save Google Sheets credentials shell: bash run: printf "%s" "${{ secrets.GOOGLE_SHEETS_CREDENTIALS }}" > credentials.json
printf能更可靠地保留JSON中的引号、换行等特殊字符,避免echo自动解析导致内容丢失。
2. Secrets名称大小写不匹配
GitHub仓库密钥是大小写敏感的,确认工作流中引用的GOOGLE_SHEETS_CREDENTIALS和你在仓库设置中添加的密钥名称完全一致,包括大小写。
3. 仓库未获取到组织级Secrets的权限
如果你的密钥是在组织级别创建的,需要确认该组织Secrets已授权给当前仓库使用:
- 进入组织Settings → Secrets and variables → Actions
- 找到对应的Secrets,检查"Repository access"是否包含你的目标仓库
4. JSON内容包含特殊字符导致echo解析异常
直接用echo输出包含双引号、反斜杠的JSON时,bash会解析这些特殊字符,导致内容被截断或丢失。使用printf可避免这类问题,如方案1所示。
调试建议
不要直接输出完整Secrets(会被GitHub自动屏蔽),可以通过以下步骤查看文件基本信息:
- name: Debug credentials file shell: bash run: | echo "File size: $(wc -c credentials.json)" echo "First 5 lines:" head -5 credentials.json
这样能确认文件是否有内容,同时不会泄露敏感信息。
内容的提问来源于stack exchange,提问作者3l3ctric_philip
相关产品推荐
相关产品推荐

