Как ввести учетные данные heroku в Travis Ruby on Rails

#ruby #git #ruby-on-rails-4 #heroku #travis-ci

#ruby #git #ruby-on-rails-4 #heroku #travis-ci

Вопрос:

Я работаю на сайте Ruby on Rails, и я внедрил Travis CI с его помощью и перешел на GitHub, чтобы протестировать свою сборку, прежде чем переходить на Heroku.

Когда Трэвис проанализировал мой исходный код на github, я получаю сообщение об ошибке с просьбой ввести мои Heroku Credentials данные, прежде чем Трэвис сможет перейти к Heroku.

Что я хочу сделать

Как мне передать свои учетные данные heroku Travis в соответствии с запросом без риска передачи их в систему управления версиями?

Вот сборка на Travis: https://travis-ci.org/AfolabiOlaoluwa/LawVille/jobs/166099588

.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
  

Ответ №1:

Ответ от @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
  

Это то, что сработало для меня.

Ответ №2:

Вам не нужно вручную нажимать на heroku on after_success . deploy Для автоматического развертывания после сборки достаточно просто иметь зашифрованные учетные данные. Поэтому попробуйте удалить after_success команды, и все должно работать.

Для получения дополнительной информации проверьте здесь

Если вам нужно сохранить свои учетные данные для использования в Travis, вы можете добавить безопасную среду в Travis. Перейдите More options > Settings туда, где вы можете добавить учетные данные в качестве переменных среды. Просто убедитесь Display value in build log , что значение отключено

Комментарии:

1. не удалось выполнить развертывание с этой ошибкой body: "{"id":"unauthorized","error":"Invalid credentials provided."}" (wrong API key?) failed to deploy . Бьюсь об заклад, я зашифровал свой ключ API Heroku и также подключился к скрипту delpoy

2. Как вы зашифровали свой ключ api?

3. Если вы не можете заставить это работать таким образом, вы можете добавить учетные данные heroku в качестве переменных среды travis secure, я отредактирую свой ответ, чтобы показать, как это сделать

4. Я запустил это travis encrypt $(heroku auth:token) --add deploy.api_key , и он добавил зашифрованный api-ключ. но все равно не удалось. вы можете ознакомиться с моим файлом travis здесь github.com/AfolabiOlaoluwa/LawVille/blob/master/.travis.yml . Вы также можете проверить m Travis Build # 22 и # 23 здесь travis-ci.org/AfolabiOlaoluwa/LawVille/builds/166254262 , travis-ci.org/AfolabiOlaoluwa/LawVille/builds/166256147

5. Тогда все должно быть в порядке. Вы уверены heroku auth:token , что возвращает действительный ключ api?