Oui, vous avez besoin d'un environnement de test ou de transfert dans lequel vous passez par toutes les étapes, mais la conservation de fichiers de configuration séparés pour des environnements distincts est un must.
Environments
|_property_files
|_ dev
|_ com.bla.util
| |_ example.properties
|_ com.bla.beans
| |_ someconfig.xml
|_ test
....
|_ production
....
|_database_updates
|_ dev
|_ insert_new_static_data.sql
|_ ...
...
Fondamentalement, dans mes scripts de génération et de déploiement, je prends une propriété d'environnement qui récupérera les fichiers de métadonnées spécifiques à l'environnement comme les fichiers XML et les remplacera dans mon emplacement de génération avant l'empaquetage. Plus loin dans mes scripts de déploiement, je rechercherai tous les fichiers SQL dans les mises à jour de base de données et les exécuterai également sur la base de données configurée pour cet environnement.
Je pourrais le faire avec une tâche de construction personnalisée, mais j'utilise en fait juste quelques tests JUnit pour le faire pour moi. Si des exceptions SQL se produisent, le test échoue et le déploiement échoue. De manière générale, les scripts SQL ont également une intelligence, si les données nécessaires existent déjà dans l'environnement, ils sautent l'insertion ou la mise à jour.
J'ai également un répertoire similaire pour les scripts batch ou shell que je dois exécuter pour un environnement spécifique.
Le tout dans votre question est le suivant: ils devraient toujours être mis à jour, mais ils ne le feront pas.
Ces configurations pilotent vos builds et déploiements automatisés, donc si vous ne les mettez pas à jour, vos builds échouent et votre responsable reçoit un e-mail à ce sujet. Il est donc tout aussi important pour l'équipe de maintenir les configurations de construction et de déploiement pour une version spécifique que pour elle de vérifier le code qui compile. L'une ou l'autre infraction rompt la construction.
En bref, une plus grande adoption des principes d' intégration continue (CI) aidera à éliminer la douleur des versions de production.