はい、すべての手順を実行するテストまたはステージング環境が必要ですが、個別の環境用に個別の構成ファイルを保持する必要があります。
Environments
|_property_files
|_ dev
|_ com.bla.util
| |_ example.properties
|_ com.bla.beans
| |_ someconfig.xml
|_ test
....
|_ production
....
|_database_updates
|_ dev
|_ insert_new_static_data.sql
|_ ...
...
基本的に、ビルドおよび展開スクリプトでは、XMLファイルなどの環境固有のメタデータファイルを取得し、パッケージ化する前にビルド場所でそれらを置き換える環境プロパティを取得します。さらに、私の展開スクリプトでは、データベースの更新でSQLファイルを探し、その環境用に構成されたデータベースでそれらを実行します。
カスタムビルドタスクでこれを行うこともできますが、実際にはいくつかのJUnitテストを使用してこれを実行します。SQL例外が発生すると、テストは失敗し、展開は失敗します。一般的に、SQLスクリプトにはインテリジェンスがあり、必要なデータが既に環境に存在する場合、挿入または更新をスキップします。
特定の環境で実行する必要があるバッチまたはシェルスクリプト用の同様のディレクトリもあります。
あなたの質問のすべてはこれです:それらは常に更新されるべきですが、更新されません。
これらの構成は自動化されたビルドと展開を促進するので、それらを更新しないとビルドが失敗し、マネージャーからメールで通知されます。チームがコンパイルするコードをチェックインするのと同じくらい重要なのは、特定のリリースのビルドと展開の構成を維持することです。どちらの違反でもビルドが壊れます。
要するに、継続的インテグレーション(CI)原則のより大きな採用は、実稼働リリースの痛みを取り除くのに役立ちます。