簡體   English   中英

如何從travis-ci在heroku上部署rails應用程序?

[英]How to deploy an rails app on heroku from travis-ci?

在travis-ci成功構建之后,有什么方法可以部署heroku rails應用程序嗎?

Travis CI現在已經內置支持部署到Heroku: http//about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/

我剛用我的應用程序實現了這個案例。 實際上並不難,但它需要一些步驟:

  1. 你需要你的heroku API密鑰
  2. 請參閱此要點以獲取示例.travis.yml並獲取travis_deployer.rb腳本
  3. 然后安裝travis gem,查看有關如何保護API密鑰的另一個問題答案
    • 如果你不關心它,只需使用上面的gist中的例子。
    • 運行travis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
    • 將結果復制到env - > global部分的.travis.yml

travis_deployer.rb文件負責travis_deployer.rb的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

這是我在Mark Ba​​tes的博客上找到的版本。 它與after_script類似,只是它依賴於.travis.yml文件中的.travis.yml

  1. 首先,使用Travis的功能加密環境變量,以便您的秘密API密鑰保持受保護:

     gem install travis travis encrypt username/repository HEROKU_API_KEY=YOUR_HEROKU_API_KEY 
  2. 然后將以下內容附加到.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 
  3. 您已完成:提交您的新更改並享受通過TravisCI部署到Heroku。


編輯:如果您在travis encrypt遇到任何錯誤, 這可能是您的解決方案

我剛剛考慮過這種情況,雖然我並沒有特別考慮Heroku作為選擇的平台。 無論如何,這就是我的想法:

  1. 拉請求轉到“開發”分支
  2. 特拉維斯為您測試拉動請求
  3. 如果我們即將部署當前正在“開發”的東西 - 人類拉動請求,審查並將其合並到“發布/候選”分支
  4. 一旦合並,特拉維斯再次測試
  5. 一旦對該分支的測試通過 - 讓Travis創建一個針對“發布/生產”的拉取請求(可能為GitHub API編寫一個包裝器,用於創建Travis的實際拉取請求)。
  6. 取決於我們是否真的想要部署或者還沒有 - 人類合並(進入“發布/生產” )或關閉從Travis創建的拉取請求
  7. 擁有部署主機或擁有每個應用程序主機(如果您有許多並且不想擁有SPF)來跟蹤“發布/生產”分支。

我相信你可以實現一個Heroku應用程序來處理作為部署主機的角色或更瘋狂的東西。

此外,您可能希望讓Travis通過IRC通知您,並在您的客戶端有另一個IRC機器人,可以訪問您的個人SSH密鑰並推送到Heroku,您也可以通過它實現一個確認界面與您自己的機器人或腳本化GUI界面進行私密對話,並帶有“Go ahead!” 按鈕。 如果您不是那么老派,可以將Hubot用於此目的。

順便說一下,您還可以在上述某些步驟之間引入某種分段分支或任何您喜歡的分支。 您可能還應該使用標簽,並且回滾只會將已知工作標簽推送到“發布/生產”中,然后由部署程序腳本將其拾取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM