Il nostro attuale metodo di creazione di una versione del prodotto è di contrassegnare tutti i repository dei componenti con la versione successiva appropriata e quindi modificare uno script di master build con questi nuovi numeri di versione per ciascun componente. Verrà quindi eseguito lo script di master build, che eseguirà un controllo SCM di ciascun componente, quindi modificherà il file AssemblyInfo.cs in modo che l'exe compilato (o dll) abbia il numero di versione corretto e quindi compili il componente. Tutti questi componenti vengono quindi combinati in una versione del prodotto che è "versionata" con un puro numero di marketing deciso.
Quindi il nostro processo rientra nella descrizione "tag drive the build", ma non sono sicuro che sia il metodo migliore. In particolare, dove vedo che questo ci sta fallendo è se dovessimo integrare la nostra versione di rilascio nel processo di configurazione, sembra che sarebbe retrocesso.
Non solo, ma dove in un tipico processo di gestione dei rilasci arriva la decisione per i nuovi numeri di versione dei componenti? Qualcuno deve decidere quando il componente A va da 2.1.4 a 3.0.0 e se la libreria B deve cambiare da 6.3.2 a 6.3.3 o 6.4.0. Dove vengono memorizzati questi numeri di versione e in quale fase vengono decisi? Attualmente, prendiamo queste decisioni all '"ultimo momento" e sono memorizzate nello script di master building. Lo script di masterizzazione stesso è versionato e contrassegnato con il numero di versione "marketing".