Sfondo:
3-5 sviluppatori che supportano (e costruiscono nuove) applicazioni interne per un'azienda non software. Usiamo TFS anche se non penso che importi molto per la mia domanda.
Voglio essere in grado di sviluppare una pipeline di implementazione e adottare tecniche di integrazione / implementazione continue.
Ecco come appare il nostro albero dei sorgenti adesso. Utilizziamo un singolo progetto di squadra TFS.
$/MAIN/src/
$/MAIN/src/ApplicationA/VSSOlution.sln
$/MAIN/src/ApplicationA/ApplicationAProject1.csproj
$/MAIN/src/ApplicationA/ApplicationAProject2.csproj
$/MAIN/src/ApplicationB/...
$/MAIN/src/ApplicationC
$/MAIN/src/SharedInfrastructureA
$/MAIN/src/SharedInfrastructureB
My Goal (una pipeline di promozione piuttosto tipica)
-
Quando viene apportata una modifica del codice a una determinata applicazione, desidero essere in grado di creare quell'applicazione e distribuirla automaticamente su un server DEV.
- Potrebbe anche essere necessario creare dipendenze da componenti dell'infrastruttura condivisa.
- Spesso ho anche alcuni script di database o modifiche
-
Se il test degli sviluppatori passa, voglio avere una distribuzione automatizzata ma automatica di quella build su un server STAGING in cui gli utenti finali rivedranno le nuove funzionalità.
-
Una volta approvato dagli utenti finali, desidero eseguire l'auto-distribuzione automatica in produzione
Domanda:
Come posso adottare al meglio le tecniche di implementazione continua in un ambiente multi-applicazione? Molti dei consigli che vedo sono più specifici per una singola applicazione, come si applica meglio a più applicazioni?
-
Per il passaggio 1, devo semplicemente impostare una compilazione di team separata per ogni applicazione?
-
Qual è l'approccio migliore per eseguire i passaggi 2 e 3 di promozione dell'ultima build in nuovi ambienti?
-
Ho visto questo funziona bene con le app Web ma per quanto riguarda le modifiche al database