GitおよびHerokuを使用した適切な継続的統合と継続的な展開
-
30-09-2019 - |
質問
HerokuとGitを使用してRuby on Rails Webサイトを開発しています。
次の簡単な開発プロセスを設定するためにどのようなツールと機能を使用する必要がありますか?
コード>チェックイン>自動テスト>自動展開
- 私は自分のコードをリポジトリにチェックします(希望のオプション、Githubのようなホストgit)
- テストは自動的に実行され、Webサイトが私のステージングHerokuアプリに展開されます
- テストが合格した場合、Webサイトは私の制作Herokuアプリに自動的に展開されます
- テストが失敗した場合は、どういうわけか通知されたいと思います。
これをどうやってやるの?
解決
を使用しております 威厳. 。これは非常に簡単な解決策です - 太陽の下ですべてを行うわけではありませんが、最も一般的なユースケース/機能をセットアップして処理するのは非常に簡単です。また、もっとやりたいと思うなら、ハッキングするのも非常に簡単です。
整合性の状態:
Herokuは、整合性を展開する最も簡単で最速の方法です。
でも:
ノート
HerokuでSSHを介してリポジトリにアクセスすることはできません
これは、IntegrityアプリにSSHキーが必要になるためです。それは不可能ではありませんが、間違いなくジャンプするためのいくつかのフープです。整合性を秘密鍵にしてアプリに入れてから、整合性をハックして、そのSSHキーを開始するときに使用する必要があります。 git clone
.
あなたがリストしたものの、自動展開はおそらく、ほとんどの人が自分のCIサーバーが行うことを期待していないことです(そして、整合性は箱から出して提供されません)。そのSSHキーを使用して、 git push
適切な場所(チェックアウトリポジトリ)から。
残念ながら、これを行う方法の詳細はわかりません。実際にVPSに整合性を実行しています。
他のヒント
Circleci 必要なものを正確に提供します。すべてのプッシュでテストを実行し、渡す場合はそれらを展開します(Herokuに、またはCapistrano/Fabric/Anythingを実際に使用してください)。失敗した場合は通知を送信します。
序文はコードシップの創設者の一人です(https://codeship.io)、これはまさにこれをサポートするサービスです。
しかし、トピックについては、基本的には、これを実装できると思われる2つの異なる方法があります(私が使用するすべてのブランチ名は任意であり、まったく異なる名前を付けられることに留意してください):
一度にステージング/制作
マスターまたは特定の展開ブランチにプッシュするたびに、テストを実行し、すべてがステージングアプリに展開する場合は、個別のテスト(セレンまたはソースラボはそれに最適です)を実行し、移行を含めてうまくいけば制作アプリにプッシュします。
最新バージョンは常に生産で利用できるため、これは素晴らしいことであり、このサイクルを長い間使用しています。私たちにとってはうまくいきます。欠点は、ステージングヘロクアプリにプッシュするには時間がかかることです。生産データのコピーに対して移行を実行したい場合は、さらに時間がかかります。それは永遠ではありませんが、数分かかります。
別々のステップとしてのステージング/制作
それぞれのHerokuアプリケーションに展開されている別々のステージング/制作ブランチを持つことができます。これにはより速くなるという利点があり、特定の部品をいつ解放するかを制御できます。特に、生産に展開する前に外部フィードバックが必要なアプリケーションでは、これはうまく機能します。
私たちはRailsonfireでそのすべてをサポートしていますが、現在、より良いサービスの新しいバージョンに取り組んでいます。私たちはHerokuと本当にうまく統合しているので、あなたはそれについて考える必要はありません(ただし、あなたが望む方法で自分でそれを行うオプションがあります)
さて、Gitプラグインとスクリプトサポートを提供するハドソンがあります。残りは構成だと思います。
試す Heroku-Bartender. 。記事 ここ.