Il nostro sistema comprende molti siti Web .NET, librerie di classi e un database MSSQL. Usiamo SVN per il controllo del codice sorgente e TeamCity per creare automaticamente un server di prova.Suggerimenti sulla gestione delle dipendenze per una versione?
Il nostro team sta normalmente lavorando su 4 o 5 progetti alla volta. Cerchiamo di moltiplicare molti cambiamenti in un'implementazione più ampia ogni 2-4 settimane.
Il mio problema è tenere traccia di tutte le dipendenze per un'implementazione. Esempio:
sito A non può andare a vivere fino a quando abbiamo srotolato Branch X della biblioteca di classe B, costruito a sua volta contro il tronco di libreria di classi C, che ha bisogno di Config Aggiornamenti Y e Z e Database aggiornamento D, che esigenze di migrazione script e ...
diventa ancora più complesso - come fare in modo progetto di ogni sviluppatore è in realtà compatibile con gli altri e stanno costruendo contro le stesse versioni. Sì, questo è un problema di gestione tanto quanto un problema tecnico.
Attualmente la nostra soluzione non ottimale è:
- una lavagna messa in vendita di caratteristiche che non sono andati in diretta ancora
- basandosi sulla nostra memoria e l'intuizione quando si pianifica l'implementazione, fino siamo abbastanza sicuri abbiamo pensato a tutto ...
- una corsa a secco sul nostro ambiente di Staging. È una buona indicazione, ma spesso non siamo sicuri che Staging sia sincronizzato al 100% con Live - parte del problema che spero di risolvere.
- una certa quantità di alaggio durante il giorno di lancio.
Fin qui tutto bene, meno alcune chiamate ravvicinate. Ma con la crescita del nostro sistema, mi piacerebbe un sistema di gestione dei rilasci più scientifico che consenta una maggiore flessibilità, come la possibilità di implementare una singola modifica o un bugfix in proprio, con la certezza che non infrangerà nient'altro.
Suppongo che la soluzione migliore riguardi una sorta di sistema di numerazione delle versioni e forse uno strumento di gestione dei progetti. Siamo una start-up, quindi non siamo troppo entusiasti di aderire religiosamente a processi rigidi, ma siamo felici di iniziare, a patto che non aggiunga altro overhead di quello che vale.
Mi piacerebbe ricevere consigli dagli altri team che hanno risolto questo problema.
I progetti si trovano in cartelle separate in un unico repository. Un esempio dell'interdipendenza è il nostro sito Web, il sito per dispositivi mobili e l'API che fanno riferimento alla stessa libreria di business logic. Questo, insieme ad altri progetti, fa riferimento alle stesse librerie di utilità. Accetto che non stiamo utilizzando completamente CI, e mi piace l'idea delle filiali Stable. Ma questo si prende cura del codice. Che dire di database, config, script di migrazione e altri fattori? – realworldcoder
@Andrew: tutto questo appartiene proprio al tuo codice nel tuo repository SVN. –