在travis-ci成功构建后,有什么方法可以部署heroku rails应用程序吗?
答案 0 :(得分:9)
Travis CI现在内置支持部署到Heroku:http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
答案 1 :(得分:5)
我刚用我的应用程序实现了这个案例。实际上并不难,但它需要一些步骤:
.travis.yml
and get the travis_deployer.rb
script travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
.travis.yml
- &gt;全球部分 travis_deployer.rb
文件负责heroku的ssh密钥和远程分支。
如果您执行了所有这些步骤,则.travis.yml
可能如下所示:
env:
global:
- secure: "1u21hjnmHjkghduUIJhhs76saljlkajdlfhGhgdJgfaVtgasfLLmNBnb87dad="
after_success:
- gem install heroku
- yes | ruby travis_deployer.rb
- heroku keys:clear
- yes | heroku keys:add
- git push heroku master
答案 2 :(得分:2)
这是我在Mark Bates' blog上找到的版本。它与Odi类似,只是它依赖于after_script
文件中的.travis.yml
。
首先,将Travis的功能用于encrypt environment variables,以便您的秘密API密钥保持受保护状态:
gem install travis
travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY
然后将以下内容附加到.travis.yml
文件中:
env:
global:
- secure: YOUR_SECURED_HEROKU_API_KEY
after_script:
# Install the Heroku gem (or the Heroku toolbelt)
- gem install heroku
# Add your Heroku git repo:
- git remote add heroku git@heroku.com:YOUR_HEROKU_APP.git
# Turn off warnings about SSH keys:
- echo "Host heroku.com" >> ~/.ssh/config
- echo " StrictHostKeyChecking no" >> ~/.ssh/config
- echo " CheckHostIP no" >> ~/.ssh/config
- echo " UserKnownHostsFile=/dev/null" >> ~/.ssh/config
# Clear your current Heroku SSH keys:
- heroku keys:clear
# Add a new SSH key to Heroku
- yes | heroku keys:add
# Push to Heroku!
- yes | git push heroku master
您已完成:提交您的新更改并享受通过TravisCI部署到Heroku。
修改:如果您在travis encrypt
,this might be your solution上收到任何错误。
答案 3 :(得分:0)
我刚刚考虑过这种情况,虽然我没有特别考虑Heroku作为选择的平台。无论如何,这就是我的想法:
我相信你可以实现一个Heroku应用程序来处理作为部署主机或更疯狂的角色。
此外,您可能希望尝试让Travis通过IRC通知您,并在您的客户端设置另一个IRC bot,它可以访问您的个人SSH密钥并推送到Heroku,您也可以在那里实现确认界面通过与您自己的机器人或脚本化GUI界面进行私人对话,并使用“Go ahead!”按钮。如果你不是那么老派,你可以为此目的使用Hubot。
顺便说一句,您还可以在上述某些步骤之间引入某种分段分支或任何您喜欢的分支。你可能也应该使用标签,回滚只是将一个已知的工作标签推送到“发布/生产”,它将从你的部署者脚本中获取。