TFS, CruiseControl.NET e Label

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” smile_tongue .

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

  1. 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…smile_regular

«March»
SunMonTueWedThuFriSat
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910