web-dev-qa-db-ja.com

GitベースのワークフローでライブWebアプリケーションの新しいバージョンをプッシュする

Web開発のワークフローについて質問があります。私はSymfonyでプロジェクトを構築していて、それはGitにあります。

現在、dev(ローカル)、ステージング、prodの3つの環境があります。プロジェクト自体は、GitHubのプライベートリポジトリでホストされています。

ステージング環境と本番環境を更新するのに良い方法は何でしょうか。どういうわけかプッシュベースのシステムをセットアップして、prod/stagingブランチをサーバーに直接プッシュし、Gitフックを使用してキャッシュファイルを再生成し、データベースの移行を実行できるようにする必要がありますか?

現在、同様のプロジェクトで、手動プルシステムを使用しています。このシステムでは、サーバーにSSHで接続し、prod Gitブランチから変更をプルダウンして、キャッシュ/移行を手動で実行します。これは明らかに理想的ではありません。

2

コマンドを使用して、サーバーをステージング/本番環境にデプロイしています。

gitプッシュ状態マスター

gitプッシュプロダクションマスター

そして終了したので、コードをプルするためにサーバーに行く必要はありません。

これはあなたが望むものかもしれません。このリンクを読んでください https://stackoverflow.com/questions/279169/deploy-a-project-using-git-Push

1
Natty

Beanstalk または Codebase のようなサービスを検討しましたか? gitリポジトリをホストしますが、Githubとは異なり、Webアプリケーションのデプロイを「ネイティブ」でサポートします。データベースの移行などを処理するためにフックを作成する必要があるかもしれませんが、そのようなサービスは展開プロセスの多くを自動化します。

1
Mihai Rotaru

(a)負荷分散を行っておらず、(b)git操作を実行した後、regen-refresh-restartサイクルを自動化した場合、現在の状況が最も理想的だと思います。自動化が多すぎると、誤って展開されるリスクがあります。

データベースの変更、キャッシュの再生成、縮小など、Webサーバーの構成など、実際の展開に関連するさまざまな複雑さがあります。新しい書き換えルールを追加する必要がある場合はどうでしょうか。それは自動化されていますか?それは私たちのためであり、私はそれを変えることは決してありません。

負荷分散の場合は、「プッシュ」サーバーにデプロイし、そこからrsyncします。

1
gahooa