travis-ci 成功ビルドの後に heroku rails アプリをデプロイする方法はありますか?
4 に答える
Travis CI には、Heroku へのデプロイのサポートが組み込まれています: http://about.travis-ci.org/blog/2013-07-09-introducing-continuous-deployment-to-heroku/
このケースを私のアプリケーションで実装しました。実際にはそれほど難しいことではありませんが、いくつかの手順が必要です。
- heroku API キーが必要です
- 例についてはこの要点を参照し、スクリプトを入手してください
.travis.yml
travis_deployer.rb
- 次に、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
これは、 Mark Bates のブログで見つけたバージョンです。after_script
これは Odi のものに似ていますが、.travis.yml
ファイル内の のみに依存するという点だけです。
まず、Travis の機能を使用して環境変数を暗号化し、秘密の 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
、これが解決策である可能性があります。
Heroku を選択のプラットフォームとして特に考えていませんでしたが、私はちょうどこの種のシナリオを考えていました。とにかく、これは私が思いついたものです:
- プル リクエストは「開発」ブランチに送信されます
- Travis がプル リクエストをテストします
- 現在「開発」にあるものをデプロイしようとしている場合- 人間がリクエストをプルし、それをレビューして「リリース/候補」ブランチにマージします
- Travis はマージ後に再度テストします
- そのブランチのテストに合格したら、Travis に「リリース/本番」を対象とするプル リクエストを作成してもらいます (おそらく、Travis から実際のプル リクエストを作成するための GitHub API のラッパーを作成します)。
- 実際にデプロイするかどうかに応じて、人間は Travis から作成されたプル リクエストを ( 「リリース/本番」に) マージするか、閉じます。
- 「リリース/運用」ブランチを追跡するために、デプロイヤー ホストを用意するか、アプリ ホストのそれぞれを用意します (多数のアプリ ホストがあり、SPF を使用したくない場合) 。
デプロイヤ ホストまたはさらにクレイジーな何かの役割を処理する Heroku アプリを実装できると確信しています。
また、Travis に IRC 経由で通知してもらい、クライアント側に別の IRC ボットを用意して、個人の SSH キーにアクセスし、Heroku にプッシュすることもできます。自分のボットまたはスクリプト化された GUI インターフェースとプライベートな会話をして、「どうぞ!」ボタン。それほど古い学校でない場合は、その目的で Hubot を使用できます。
ところで、ステージング ブランチのようなものや、上記の手順の間に好きなものを導入することもできます。おそらくタグも使用する必要があり、ロールバックは、デプロイヤスクリプトによって取得される場所から、既知の作業タグを「リリース/本番」にプッシュするだけです。