Questa domanda ha più a che fare con la struttura e l'accesso di diverse configurazioni attraverso una serie di livelli di sviluppo. Quello che intendo per "livelli di sviluppo" sono gli ambienti in cui vivono le diverse versioni del codice e del prodotto. Può trattarsi di un ramo "Sviluppo", un ramo "Qualità" o una delle diverse aree "Produzione" o "Rilascio".
Abbiamo un numero di servizi che stiamo creando attorno a una VM Java. Al di fuori di Java, stiamo specificando un file di configurazione che il JAR analizza per cose come posizione, nome utente e password del server SQL. Avremo bisogno che questo file di configurazione sia diverso per ogni ambiente in cui è presente, attraverso la promozione / fusione del codice attraverso il processo di sviluppo, passando dallo sviluppo alla gestione temporanea alla qualità, ecc. Poiché ogni istanza del server SQL avrà il proprio Indirizzo IP, nome e informazioni di accesso. La struttura di ogni file di configurazione potrebbe anche essere diversa l'una dall'altra, anche se sarebbe ancora analizzabile dal JAR.
Dal momento che tutto ciò deve accadere, rimaniamo a pensare a quale potrebbe essere la soluzione migliore. Non possiamo mantenere il file di configurazione nel repository di controllo del codice sorgente (utilizzando Git al momento) con il resto del codice, perché deve essere diverso da server a server. Inoltre, qualsiasi modifica alla configurazione che deve accadere non dovrebbe essere un push / pull completo e ricostruire da quel server.
Quali sono alcuni modi per fare questo? Un'idea che abbiamo visto era avere una posizione di controllo del codice sorgente separata solo per i file di configurazione, ma per noi è ancora indesiderabile.