Dopo un lungo periodo di assenza (principalmente dovuti al lavoro), torno con un progetto appena rilasciato su CruiseControl.NET: TFS Labeller for CruiseControl.NET .
Il progetto era “dormiente” da un po’, fino a che, chiacchierando con Alk all’ultima UgiAlt.NET conference, mi sono convinto che
“Non sono un pazzo che associa le versioni delle dll alle revision del repository” .
Cos’è: il progetto appena linkato consiste in un custom labeller per CruiseControl.NET che, a partire da un repository TFS (2005 o 2008), genera un’etichetta valida per i Vs. Build.
In particolare, il mio custom labeller, genera un’etichetta (label) costruendola in questo modo
- Partendo dal presupposto che la label sara’ semplicemente un numero di versione del tipo <major>.<minor>.<build> ,
<major> e <minor> sono fornite dalla configurazione del labeller (all’interno del ccnet.config) mentre, il numero di build, viene creato
dall’ultimo IdChangeset (revision) interrogando il repository TFS.
Perchè: In seguito alla migrazione del repository aziendale da Subversion a TFS, ho dovuto adattare gli script di build (e la configurazione di CruiseControl.NET);
purtroppo, però, un labeller equivalente a quello che utilizzavo con SubVersion (svnRevisionLabeller) per Team Foundation Server non esiste(va).
Ho perso più tempo a cercarne uno che a farlo da me.
Dove: dove trovarlo? Beh, su codeplex, all’indirizzo http://tfsrevisionlabeller.codeplex.com/ . Attualmente, ho rilasciato la versione bindata agli Assembly di VS2008 .
Ne rilascierò un’altra a breve con le reference agli assembly di VS2005.
Su Codeplex, come di consueto, ci sono anche i sorgenti. A parte “il rumore” (cit.), forse la linea di codice più importante del progetto è la seguente (che trovate nel metodo Generate):
IEnumerable changeSets = versionControl.QueryHistory(TfsProjectPath, VersionSpec.Latest, 0, RecursionType.Full, null, null, null, 1, true, false);
In breve (per approfondimenti, potete fare riferimento ad MSDN), con la riga di codice qui sopra, chiedo a TFS, per il progetto con repository TfsProjectPath, di restituirmi l’ultima revisione .
Il metodo QueryHistory ritorna comunque un IEnumerable sebbene, in questo override, viene restituito un solo changeset.
Ne volete sapere di più di Continuous Integration, CruiseControl.NET &C. ? Stay tuned…
posted @ lunedì 8 marzo 2010 11:40