如何在Travis ci中使用来自secrets.yml的密钥?

时间:2015-08-13 07:33:17

标签: ruby-on-rails travis-ci

我需要在我的仓库中使用S3存储中的两个密钥才能使Travis测试通过。

我使用travis gem来加密我的密钥:

travis encrypt "aws_access_key=MYSUPERSECRETKEY" --add env
travis encrypt "aws_secret_key=MYSUPERSECRETKEY" --add env

得到了travis.yml字符串:

env:
  secure: SOMESTUFFuru4irlVd3Hd6c+x2joz6g=
  secure: SOMESTUFFuru4gfgfgfgfgfggfgfgfHd6c+x2joz6g=

我将这些密钥添加到了carrierwave.rb:

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: "AWS",
    aws_access_key_id: Rails.application.secrets.aws_access_key,
    aws_secret_access_key: Rails.application.secrets.aws_secret_key,
    region: Rails.application.secrets.aws_region
  }
  config.fog_directory = "busketS3"
end

把它推到Github上。但是我收到了一个错误:

Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)

My secrets.yml:

development:
  facebook_key: "***********"
  facebook_secret: "***************"
  google_key: "***********************"
  google_secret: "***********************"
  aws_access_key: "***********************"
  aws_secret_key: "***********************"
  aws_region: "***********************"
test:
  secret_key_base: "***********************"
  aws_access_key: "***********************"
  aws_secret_key: "***********************"
  aws_region: "***********************"
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

怎么了?

1 个答案:

答案 0 :(得分:2)

我认为secrets.yml中存在问题:

secret_key_base: "***********************"
aws_access_key: "***********************"
^^^^^^^^^^^^^^
aws_secret_key: "***********************"
^^^^^^^^^^^^^^
aws_region: "***********************"

但根据你的错误,键应该是:

  

缺少必需的参数:aws_access_key_idaws_secret_access_key   (引发ArgumentError)

aws_access_key, aws_secret_access