将test.key存为密钥后,GitHub Action仍报Missing Master Key Error
Rails Credentials 在 GitHub Action 测试环境中出现 Missing Master Key Error 的解决方法
问题场景
运行GitHub Action测试时触发Missing Master Key Error,已完成以下操作但问题未解决:
- 执行
rails credential:edit -e test生成credentials/test.key与credentials/test.yml.enc文件 - 将
test.key的内容存入GitHub Actions的密钥库 - 在GitHub Action配置中引用密钥:
env: RAILS_ENV: test RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }}
注:生产环境采用相同配置(存储master.key)可正常运行。
核心原因与解决方法
Rails Credentials支持两种使用方式,问题出在环境密钥的匹配逻辑上:
- 单密钥全局模式:所有环境共用根目录下的
master.key,对应根目录的credentials.yml.enc加密文件 - 多环境独立密钥模式:每个环境使用专属密钥文件,如
production.key、development.key、test.key,分别对应credentials/{环境名}.yml.enc加密文件
如果采用多环境独立密钥模式,GitHub Action中不能用RAILS_MASTER_KEY环境变量,需替换为对应环境的变量名——测试环境应设置RAILS_TEST_KEY而非RAILS_MASTER_KEY。
若想沿用单密钥模式,只需确保所有环境的加密凭据都写入根目录的credentials.yml.enc,同时GitHub Action里的RAILS_MASTER_KEY对应根目录master.key的内容即可。
内容的提问来源于stack exchange,提问作者claireDMT
相关产品推荐
相关产品推荐

