Suggerirei un processo in due fasi. Costruire crea il programma di installazione, che esce sul tuo server. Le macchine client sono configurate per estrarre il programma di installazione all'avvio / mezzanotte / finestra di manutenzione ed eseguirlo silenziosamente.
Quindi continui a costruire durante il giorno, ma i sistemi live catturano il nuovo programma di installazione al momento opportuno. Non è tanto questione di avere una sola cosa fare tutto il lavoro del ciclo build / deploy. Il punto è avere tutto automatizzato che è un animale diverso.
L'esempio classico è che un robot cucina un pasto. La maggior parte delle persone inizia a progettare il modo in cui il robot aprirà la porta del frigorifero, controllerà la produzione in base alla sensazione, così via e così via. Ma un design adeguato getta il concetto di una cucina! Un robot per cucinare sarebbe l'intera stanza. Ci sarebbe una parte che apre il prodotto pre-confezionato, già determinato corretto, e lo sposta tramite un nastro trasportatore alla stufa. Alla stufa, più bracci con utensili incorporati avrebbero iniziato a montare il prodotto in uscita. La cosa non ha bisogno di mani, non ha bisogno di gambe, quasi non ha bisogno di occhi.
Il tuo sistema di costruzione non dovrebbe essere: "prendere ciò che una persona farebbe / fa attualmente e fare in modo che un programma lo attraversi esattamente". Inizia da ciò che vuoi realizzare . Quando il tuo processo viene eseguito, la distribuzione viene eseguita, ovunque tu abbia definito tale.