2017-03-17 7 views
2

私たちはGitを使用していますが、私たちの仕事の流れはdevelopment> staging> productionです。GitでのProdとDevのコンフィグレーションの最適な切り替え

プロジェクトにはいくつかの設定ファイルがあります。開発中、configsは開発データベースを指します。しかし、開発が変更され、導入準備が整うと、設定を変更して運用データベースを指す必要があります。

変更の次のラウンドでは、開発データベースを指すようにconfigsを再度変更する必要があります。

私は3つの設定ファイルを持っているので、このサイクルは繰り返され続けます(1つの設定ファイルが特定のライブラリ用であるため、できるだけ2つあります)。

これを行うより良い方法はありますか?

+0

もしあなたが絶対にリポジトリに設定ファイルを保存しなければならない場合は、このためにブランチを使うことを考えましたか?開発から生産ブランチを作成し、生産に合わせて設定ファイルを変更してください。マージの競合が少なくとも発生するまで、変更したコンフィギュレーションファイルを保持する必要があるさまざまなポイントで、開発環境を実動環境にマージします。 –

+0

通常のアドバイスは、テンプレートをリポジトリに格納するだけです。実際の構成ファイルがディスク上にないことを検出し、テンプレートからコピーを作成するビルドステップなどがあります。その後、ディスク上の設定ファイルを編集します。しかしこれでは、実稼働環境の設定ファイルを自動的にチェックアウトすることはできません。 –

+0

ありがとう@ LasseV.Karlsen私は.gitignoreに設定ファイルを追加しましたが、まだ無視されていませんでしたが、なぜか分かりませんでした。 untrackを試して、私の設定ファイルがなくなった! 私はプロダクションブランチを作成しました。プロダクションブランチには、毎回開発ブランチをマージしています。 ビルドステップ中にテンプレートを使用して設定を作成することに本当に関心があります。あまりにも基本的な私のビルドに取り組む必要があります。 –

答えて

0

私はそれを回避するための良い方法は、環境変数にデータベース情報を格納することで、あなたの設定ファイルは、ホスト、ユーザ名、パスワード... IMO

などのデータベース情報が含まれていると仮定して、あなたの設定ファイルにそれらを取得(s)。

たとえば、開発、ステージング、およびプロダクションでは、データベースホストは、DATABASE_HOSTという名前の環境変数に格納されます。設定ファイルでは、この行(phpコード)

$databaseHost = getenv('DATABASE_HOST'); 
// ... 

そして@Lasse V. Karlsenのテンプレートは、gitので追跡する必要があると設定ファイル自体はのgit - 無視されるべきである、と述べなどを持っていると思います。 このように、開発者は環境変数を作成する必要はなく、テンプレートから設定ファイル(git-ignoredはもちろん)を作成し、データベース情報を設定する必要があります。サーバー、環境...)

まとめてみると、構成ファイルは無視されるはずです。代わりにテンプレートを作成する必要があります。デプロイ時に、テンプレートから構成ファイルが作成されます。 新しい構成ファイルは、必要な環境変数を取得します。 しかし、開発者はこれらの環境変数をローカルで作成したり、構成ファイルの値を変更することができます。

+0

ありがとう@smarber、私は概念をゲットしている、私はそれがファイルの.propertiesタイプのために働くかどうか分からない。恐らく疑わしい質問ですが、環境変数はどこに正確に格納されていますか? –

+0

または、システムに環境変数が設定されていることを意味しますか? –

+0

@ SamuelWaithakaはい私は、設定ファイルから何らかの形で得た環境変数を設定する必要があるということを意味しました(私はすべての言語で許可されていると思います) – smarber

関連する問題