如何在Travis Ruby on Rails中输入heroku凭据

如何在Travis Ruby on Rails中输入heroku凭据,ruby,git,ruby-on-rails-4,heroku,travis-ci,Ruby,Git,Ruby On Rails 4,Heroku,Travis Ci,我在RubyonRails站点上工作,我已经用它实现了TravisCI,并将其推到GitHub,以便在推到Heroku之前测试我的构建 当Travis解析我的github源代码时,我收到一个错误,要求我在Travis推送到Heroku之前输入我的Heroku凭据 我想做什么 我如何按照要求将heroku凭证传递给Travis,而不必承担将其置于版本控制的>风险 以下是基于Travis的构建: .travis.yml language: ruby rvm: - 2.2.4 env: glob

我在RubyonRails站点上工作,我已经用它实现了TravisCI,并将其推到GitHub,以便在推到Heroku之前测试我的构建

当Travis解析我的github源代码时,我收到一个错误,要求我在Travis推送到Heroku之前输入我的
Heroku凭据

我想做什么

我如何按照要求将heroku凭证传递给Travis,而不必承担将其置于版本控制的>风险

以下是基于Travis的构建:

.travis.yml

language: ruby 
rvm:
- 2.2.4
env:
  global:
  - secure: {{ I have my travis encrypted key here }}
  - secure: {{ I another travis encrypted key here }}
  - DB=sqlite
  - DB=mysql
  - DB=postgresql
  - secure: {{ I have another travis encrypted key here }}
deploy:
  provider: heroku
  api_key:
    secure: {{ I have HEROKU API KEY encrypted by travis here  }}
script:
- RAILS_ENV=test bundle exec rake db:migrate --trace
- bundle exec rake db:test:prepare
before_script:
- mysql -e 'create database strano_test'
- psql -c 'create database strano_test' -U postgres
after_success:
- gem install heroku
- yes | ruby ./config/initializers/travis_deployer.rb
- git remote add heroku git@heroku.com:lawville.git
- heroku keys:clear
- yes | heroku keys:add
- git push heroku master

成功后,您无需在
上手动推送到heroku。只需将
deploy
与加密凭据一起使用,就足以在构建后自动部署。因此,尝试在成功后删除
命令,一切都会正常工作

有关更多信息,请查看


如果需要存储要在Travis上使用的凭据,可以向Travis添加安全环境。转到
More options>Settings
,您可以将凭据添加为环境变量。只需确保将构建日志中的显示值设置为“关闭”

以上@andresk的回答非常有用,但是加密api密钥对我来说并不起作用,正如您从我们的评论/通信中看到的那样

对我有效的是,从终端内我的应用程序的根目录运行
setup heroku--org--force
,然后我按照提示获取具有正确部署脚本的Travis文件

注意
--force
命令用于强制在已存在的
.travis.yml
文件上编写脚本

响应提示后,我的部署脚本变为:

deploy:
  provider: heroku
  api_key:
    secure: encrypted_key_was_written_here
  app: lawville # being app name on heroku which am deploying to.
  on:
    repo: AfolabiOlaoluwa/LawVille # GitHub Repo

这就是对我有效的方法。

部署失败,出现以下错误
正文:“{\'id\':\'unauthorized\”,“\'error\':\'Invalid credentials provided.\'”}”(错误的API密钥?)部署失败
。打赌我确实加密了我的Heroku API密钥,并附加到了delpoy脚本。你是如何加密你的API密钥的?如果你不能这样做,你可以添加Heroku凭据作为travis安全环境变量,我将编辑我的答案以显示如何做的。我确实运行了这个
travis encrypt$(Heroku auth:token)--添加deploy.api_key
,并添加了加密的api key。但还是失败了。你可以在这里查看我的travis文件。你也可以在这里查看m Travis Build#22和#23,嗯,那应该没问题。您确定heroku auth:token
返回了有效的api密钥吗?