Gestione delle configurazioni di rilascio quando si utilizza TFS Build

5

L'organizzazione per cui lavoro attualmente utilizza la distribuzione Web per il rilascio in diversi ambienti. La configurazione delle applicazioni Web (stringhe di connessione, URL del servizio e così via) viene gestita utilizzando le configurazioni della soluzione, con le trasformazioni app.config associate. Con il debug, tre ambienti di test e produzione, ci sono cinque configurazioni di soluzioni (quattro trasformazioni). Quando si esegue la distribuzione in un ambiente, la distribuzione Web crea le soluzioni rispetto alla configurazione selezionata e quindi la distribuisce utilizzando la trasformazione appropriata.

Sto cercando di spingerci a utilizzare un processo di gestione build e release più sofisticato. La società è strongmente legata all'utilizzo di strumenti Microsoft e ha accettato di utilizzare TFS Build 2015 (in sede).

Il processo corrente mi sembra inadatto per l'uso in combinazione con un approccio CI / CD e la gestione del rilascio di TFS. Non sono convinto che una build testata in una configurazione di soluzione debba essere ricostruita e promossa in una configurazione di soluzione diversa. L'altra preoccupazione è che questo sarebbe pesante per la manutenzione, richiedendo definizioni di compilazione separate e quindi definizioni di rilascio per ciascun ambiente.

Immagino che dovrebbero essere utilizzate solo due configurazioni di soluzione (debug e release). Il check-in per il ramo di sviluppo avvia automaticamente una build CI con la configurazione di debug. Per iniziare, la distribuzione richiederebbe una build manuale in modalità di rilascio. La definizione della versione potrebbe quindi essere utilizzata per promuovere questa build in ogni ambiente con la configurazione dell'applicazione pertinente, come richiesto.

Alla fine l'obiettivo sarebbe quello di automatizzare la distribuzione nella prima fase del test (ad esempio attraverso l'unione in un ramo di rilascio). Potrebbe anche essere utile estendere il catering a una terza configurazione di soluzione che viene implementata in un ambiente per l'esecuzione di test automatici.

Le mie domande sono:

  • È mia opinione che sia preferibile non ricostruire ragionevolmente per ogni ambiente?
  • È un approccio adeguato per raggiungere i miei obiettivi o ho perso un approccio diverso / migliore?
  • Se si segue questo approccio, si ritiene preferibile lasciare in essere le configurazioni della soluzione (per le trasformazioni app.config), usando solo il debug / release per la build e quindi la trasformazione come parte del lavoro di rilascio? O è meglio gestire la configurazione attraverso le variabili di ambiente di definizione della versione (non abbiamo la gestione centralizzata della configurazione)?
posta webdevduck 29.11.2016 - 17:59
fonte

1 risposta

0

Penso che tu sia sulla strada giusta.

Is my belief that it is preferable not to rebuild for each environment reasonable?

Hai ragione. Dovresti creare una volta e distribuire le stesse risorse in ogni ambiente, modificando solo i dati di configurazione.

Is this a suitable approach to achieve my objectives, or have I missed a different/better approach?

Quello che hai descritto (due configurazioni di soluzione, la promozione di una build con la relativa configurazione dell'applicazione) è una buona soluzione, secondo me.

If following this approach, is it considered preferable to leave the solution configurations in place (for the app.config transforms), just using debug/release for the build and then transforming as part of the release job? Or is it better to manage the configuration through the Release Definition environment variables (we do not have centralised configuration management)?

Penso che sia corretto lasciare il debug e rilasciare le configurazioni sul posto. È possibile utilizzare i gruppi di variabili o semplicemente archiviare i file di configurazione specifici dell'ambiente in una posizione sicura, estraendoli quando necessario durante le versioni. Usa tutto ciò che è più facile da mantenere.

    
risposta data 12.10.2018 - 01:29
fonte