在travis-ci成功构建后,有没有任何方式可以部署一个Heroku Rails应用程序?
在travis-ci成功构建后,有没有任何方式可以部署一个Heroku Rails应用程序?
Travis CI现在内置支持部署到Heroku:http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
(注:Travis CI是一个可持续集成服务,Heroku是云平台)我刚刚在我的应用程序中实现了这个案例。 实际上并不难做,但需要一些步骤:
.travis.yml
和获取travis_deployer.rb
脚本travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
.travis.yml
中的env ->全局部分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
after_script
更改为 after_success
,否则可能会部署损坏的代码。 - Ivan- for i in $(grep '[^\ ]*$' ~/.ssh/id_rsa.pub -o); do heroku keys:remove $i;done
这将简单地删除新添加的密钥,而不会影响其他内容。这意味着如果您在本地开发中使用此帐户,则无需为每次部署添加密钥。 - Ryan我在Mark Bates的博客上找到了一个版本。它类似于Odi的版本,只是它仅依赖于您.travis.yml
文件中的after_script
部分。
First of all, use Travis' feature to encrypt environment variables so your secret API keys remain protected:
gem install travis
travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY
Then append the following to your .travis.yml
file:
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
And you're done: commit your new changes and enjoy deploying to Heroku via TravisCI.
编辑:如果你在使用travis encrypt
命令时遇到任何错误,这可能是解决方案。
.travis.yml
并到达heroku keys:clear
时,我看到以下代码,但不知道如何提供电子邮件。`heroku-cli:正在安装CLI... 22.44MB / 22.44MB输入您的Heroku凭据。电子邮件:` - Afolabi Olaoluwa我之前就考虑过这种情况,尽管我没有特别考虑Heroku作为首选平台。不管怎样,这是我想出来的方案:
我相信你可以实现一个Heroku应用程序,来处理成为部署主机或者更疯狂的事情。
此外,您可能希望尝试让Travis通过IRC通知您,并在客户端上拥有另一个IRC机器人,该机器人将访问您的个人SSH密钥并向Heroku进行推送,您还可以通过与自己的机器人或脚本化GUI界面进行私人对话来实现确认界面,其中包含一个"Go ahead!"按钮。如果您不是那么老派,您也可以使用Hubot来实现这一目的。
顺便说一下,您还可以在上述步骤之间引入某种分段分支或其他任何您喜欢的东西。您可能还应该使用标签,回滚只需将已知工作标签推送到"release/production"中,然后由部署脚本接收。
config.assets.initialize_on_precompile = true
的gems,所以我通常需要在手动部署到Heroku之前预编译资产。运行$ heroku labs:enable user-env-compile -a YOUR_HEROKU_APP
后,我不需要在我的**.travis.yml**中运行rake assets:precompile
。我只希望Heroku能够保留这个功能。 - Paul Fioravantiafter_script
更改为下面答案中的after_success
。 - Paul Fioravanti