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

在CircleCI中处理Rails应用的Credentials问题

解决CircleCI构建Rails项目时缺失master.key的问题

我来帮你搞定这个问题,这是用Rails+CircleCI时非常常见的场景,我自己踩过好几次坑,分享几个靠谱的解决方案:

方法一:将master.key作为环境变量注入CircleCI

这是最常用的方案,既安全又容易维护:

  • 打开CircleCI控制台,进入你的项目设置,找到「Environment Variables」选项
  • 添加一个名为RAILS_MASTER_KEY的环境变量,值就是你本地config/master.key文件里的完整内容
  • 在你的.circleci/config.yml中,在执行测试步骤前添加生成master.key的命令:
    version: 2.1
    jobs:
      build:
        docker:
          - image: cimg/ruby:3.2.2
        steps:
          - checkout
          # 生成master.key文件
          - run: echo "$RAILS_MASTER_KEY" > config/master.key
          - run: bundle install
          - run: rails test
    
    重点提醒:绝对不要把明文的master.key提交到GitHub仓库,这个方案完美规避了这个风险。

方法二:用CircleCI加密文件功能存储加密后的master.key

如果团队协作时希望把加密后的密钥文件存在仓库里,这个方案更合适:

  • 先安装CircleCI CLI工具,然后执行加密命令:
    circleci encrypt-file config/master.key -o config/master.key.enc
    
  • 命令执行后会生成加密后的master.key.enc文件,同时输出一段解密命令,把这段命令复制到你的.circleci/config.yml中:
    version: 2.1
    jobs:
      build:
        docker:
          - image: cimg/ruby:3.2.2
        steps:
          - checkout
          # 解密生成master.key
          - run: |
              mkdir -p config
              circleci decrypt-file config/master.key.enc -o config/master.key
          - run: bundle install
          - run: rails test
    
  • 把master.key.enc提交到GitHub,原master.key依然留在.gitignore中不提交。

方法三:为测试环境单独配置credentials(轻量化方案)

如果你的测试流程不需要调用真实的第三方服务(比如不需要调用支付接口、短信接口等),可以为测试环境单独生成一套credentials:

  • 执行命令生成测试环境的credentials文件:
    rails credentials:edit --environment test
    
    这会生成config/credentials/test.key和config/credentials/test.yml.enc
  • 在测试环境的credentials里配置一些测试用的假密钥即可(比如api_key: test_key_123)
  • 然后用前面两种方案的任意一种,把config/credentials/test.key提供给CircleCI即可。

总结

最推荐的是前两种方案,具体选哪一种看团队的协作习惯:如果喜欢极简维护,选环境变量方案;如果希望密钥相关文件能跟随仓库版本管理,选加密文件方案。核心原则始终是保护明文密钥的安全,绝不提交到公共代码仓库。

内容的提问来源于stack exchange,提问作者darkcode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:48:32