在travis-ci成功構建之後,有什麼辦法可以部署heroku rails應用程序?如何在travis-ci上部署heroku上的rails應用程序?
回答
特拉維斯CI現在已經內置支持部署到Heroku的:http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
我剛剛考慮過這種場景,雖然我沒有特別考慮Heroku作爲選擇的平臺。總之,這就是我來-了:
- 引入請求去「發展」分支
- 特拉維斯測試拉的要求爲您
- 如果我們要部署什麼是目前在「發展」 - 人類拉入請求,審查和歸併到「發佈/候選人」分支
- 特拉維斯測試再次合併
- 一旦測試上分支通過 - 讓Travis創建一個針對「發佈/產品」的拉請求(也許編寫GitHub API的包裝以創建實際的拉特請求表單Travis)。
- 取決於我們是否真的要部署或不相當,但 - 一個人的合併(成「發行/製作」)或關閉特拉維斯 創建
- 拉入請求有一張部署主機或具有各自的應用程序主機(如果你有很多並且不想擁有SPF)來跟蹤「發佈/製作」分支。
我相信你可以實現一個Heroku應用程序,它可以處理部署主機或更瘋狂的角色。
此外,您可能希望嘗試讓Travis通過IRC通知您,並在您的客戶端擁有另一個可以訪問您個人SSH密鑰並向Heroku推送的IRC bot,還可以實現確認界面通過與您自己的機器人或者腳本GUI界面進行私密對話,並與「繼續!」按鈕。如果你不是那麼老,你可以用Hubot來達到這個目的。
順便說一下,您還可以在上述某些步驟之間引入某種臨時分支或任何您喜歡的東西。您可能還應該使用標籤,回滾會將一個已知的工作標籤推送到「發佈/產品」中,由您的部署程序腳本將其從中取出。
我剛剛用我的應用程序實現了這種情況。這其實並不難做到,但它需要一些步驟:
- 你需要your heroku API key
- 見this gist for an example
.travis.yml
and get thetravis_deployer.rb
script - 然後安裝特拉維斯寶石,看到answer to another question on how to secure your API key。
- 如果你不關心它,只需使用上面的要點。
- 運行
travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
- 複製的結果在你的
.travis.yml
在ENV - >全局部分
的travis_deployer.rb
文件採用SSH密鑰和Heroku的遠程分支的照顧。
如果您已經執行了所有這些步驟你.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 2013-04-23 07:41:09
@Ivan:好的,我相應地編輯了我的答案。謝謝! – Odi 2013-04-23 11:31:09
我最終使用這個,除了而不是做一個鍵:清除我在最後添加了這個: ' - 爲我在$(grep'[^ \] * $'〜/ .ssh/id_rsa.pub -o);做heroku密鑰:刪除$我;完成' 這應該簡單地刪除新添加的密鑰,沒有別的。這意味着如果您使用此帳戶進行本地開發,則不必爲每次部署添加密鑰。 – Ryan 2013-06-11 04:34:57
這裏是一個版本,我就發現Mark Bates' blog。這與Odi's很相似,只是它依靠僅在.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 [email protected]: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任何錯誤。
我可以做些什麼來提供它的要求?當特拉維斯解析我的'.travis。yml'並獲取到heroku密鑰:清除,我看到以下代碼,我不知道如何提供電子郵件 'heroku-cli:安裝CLI ... 22.44MB/22.44MB 輸入您的Heroku證書。 電子郵件:'' – 2016-10-08 20:00:55
- 1. 在Heroku上部署Rails應用程序
- 2. 如何知道在Heroku上部署應用程序Rails 3
- 3. Laravel - 在Heroku上部署應用程序
- 4. 在Heroku上部署Django應用程序
- 5. 在Heroku上部署Spring應用程序
- 6. 在Heroku上部署Sinatra應用程序
- 7. 在Heroku上部署Python應用程序
- 8. 部署Rails應用程序在Heroku
- 9. 在Heroku中部署rails應用程序
- 10. 未能在Heroku上部署Rails應用程序
- 11. 在heroku上部署第一個ruby on rails應用程序
- 12. 在dotcloud上部署rails應用程序
- 13. 在Bluehost上部署Rails應用程序
- 14. 在apache上部署Rails應用程序
- 15. 在Dreamhost上部署Rails應用程序
- 16. 在EC2上部署Rails應用程序
- 17. 在Heroku上部署應用程序應用程序
- 18. 部署到Heroku,Rails應用程序
- 19. Heroku上的Rails部署
- 20. 如何在Heroku上部署安全(HTTPS)Meteor應用程序?
- 21. 如何在Heroku上部署非縮小代碼應用程序?
- 22. 如何在Heroku上部署Laravel 4應用程序?
- 23. 如何在heroku上部署多租戶應用程序?
- 24. 如何在Heroku中部署React應用程序和Rails API?
- 25. Rails/heroku:如何使我的應用程序在heroku上工作
- 26. 使用Mysql的Rails應用程序如何與heroku部署?
- 27. 我應該在Heroku上部署我的Ruby on Rails應用程序
- 28. 在Heroku上部署應用程序時不應用BUNDLE_WITHOUT
- 29. 如何在Heroku上使用Puma部署Michael Hartl的Rails教程應用
- 30. 在Heroku上部署Node.js應用程序的問題使用MongoLab
我只是看了看,似乎你可以做一個腳本來安裝Heroku的寶石,然後有on_sucess登錄另一個腳本,做混帳推heroku高手。關於這個的細節不知道,我只是假設它是可能的 – 2012-04-19 19:45:52
是的!但如何處理travis-ci上的ssh密鑰? – danielgatis 2012-04-19 20:28:45
我認爲以下答案中的一個值得接受@danielgatis。我在@Odi和@Marius Butuc的答案中使用了相關信息,以實現我的持續部署。我將在此處添加引用,因爲我使用的gem需要我在** application.rb **中設置'config.assets.initialize_on_precompile = true',所以我通常必須在手動部署到Heroku之前預編譯我的資源。運行'$ heroku實驗室:啓用用戶-env-compile -a YOUR_HEROKU_APP'後,我不需要在我的** .travis.yml **中運行'rake assets:precompile'。我只希望Heroku保持這個功能。 – 2012-12-23 02:06:33