#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 и также подключился к скрипту delpoy2. Как вы зашифровали свой ключ 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/1662561475. Тогда все должно быть в порядке. Вы уверены
heroku auth:token
, что возвращает действительный ключ api?