18

travis-ci 成功ビルドの後に heroku rails アプリをデプロイする方法はありますか?

4

4 に答える 4

9

Travis CI には、Heroku へのデプロイのサポートが組み込まれています: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/

于 2013-07-09T15:12:32.967 に答える
5

このケースを私のアプリケーションで実装しました。実際にはそれほど難しいことではありませんが、いくつかの手順が必要です。

  1. heroku API キーが必要です
  2. 例についてはこの要点を参照し、スクリプトを入手してください.travis.ymltravis_deployer.rb
  3. 次に、travis gem をインストールします。API キーを保護する方法に関する別の質問への回答を参照してください。
    • 気にしない場合は、上記の要点の例を使用してください。
    • 走るtravis encrypt your_username/your_repo HEROKU_API_KEY=<your key here>
    • .travis.yml結果をenv -> global セクションにコピーします

この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
于 2012-10-11T22:33:41.420 に答える
2

これは、 Mark Ba​​tes のブログで見つけたバージョンです。after_scriptこれは Odi のものに似ていますが、.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これが解決策である可能性があります

于 2012-12-15T06:43:15.370 に答える
0

Heroku を選択のプラットフォームとして特に考えていませんでしたが、私はちょうどこの種のシナリオを考えていました。とにかく、これは私が思いついたものです:

  1. プル リクエストは「開発」ブランチに送信されます
  2. Travis がプル リクエストをテストします
  3. 現在「開発」にあるものをデプロイしようとしている場合- 人間がリクエストをプルし、それをレビューして「リリース/候補」ブランチにマージします
  4. Travis はマージ後に再度テストします
  5. そのブランチのテストに合格したら、Travis に「リリース/本番」を対象とするプル リクエストを作成してもらいます (おそらく、Travis から実際のプル リクエストを作成するための GitHub API のラッパーを作成します)。
  6. 実際にデプロイするかどうかに応じて、人間は Travis から作成されたプル リクエストを ( 「リリース/本番」に) マージするか、閉じます。
  7. 「リリース/運用」ブランチを追跡するために、デプロイヤー ホストを用意するか、アプリ ホストのそれぞれを用意します (多数のアプリ ホストがあり、SPF を使用したくない場合) 。

デプロイヤ ホストまたはさらにクレイジーな何かの役割を処理する Heroku アプリを実装できると確信しています。

また、Travis に IRC 経由で通知してもらい、クライアント側に別の IRC ボットを用意して、個人の SSH キーにアクセスし、Heroku にプッシュすることもできます。自分のボットまたはスクリプト化された GUI インターフェースとプライベートな会話をして、「どうぞ!」ボタン。それほど古い学校でない場合は、その目的で Hubot を使用できます。

ところで、ステージング ブランチのようなものや、上記の手順の間に好きなものを導入することもできます。おそらくタグも使用する必要があり、ロールバックは、デプロイヤスクリプトによって取得される場所から、既知の作業タグを「リリース/本番」にプッシュするだけです。

于 2012-05-24T22:53:33.680 に答える