2015-05-23 14 views
14

Sto cercando di utilizzare informazioni di assemblaggio patcher per creare un numero di versione qualcosa come:TeamCity 9: Come aggiungere git breve hash in informazioni di assemblaggio patcher

1.2.3.1a3c19e

dove l'ultimo bit è il git short hash.

Ho provato a utilizzare una fase di generazione di script di PowerShell per creare l'hash breve (poiché non trovo una variabile che lo ha) e aggiungerlo a una variabile di sistema, ma questa fase di creazione sembra essere eseguita dopo l'assembly delle informazioni patcher, quindi non è molto utile

risposta

27

Se si desidera scrivere questo nel campo Informazioni di assieme, è possibile farlo, ma richiede una configurazione di compilazione separata per generare il numero di build. L'unico scopo di questo passaggio è creare il numero di build a cui è stato aggiunto l'hash.

1. Creare una configurazione di generazione per generare l'hash breve

Build Config

2. Aggiungere un passo per generare l'hash

Build Config

3. Add un parametro per memorizzare l'hash

Param

4. Aggiungere una seconda configurazione di generazione e di aggiungere una dipendenza al primo

Dependency

5. A questo punto è possibile consumare il parametro nella fase dipendente

Consume

6. A questo punto si può usare in informazioni di assemblaggio patcher

Patcher

L'alternativa a questo è quello di scrivere il numero di build di nuovo al Git utilizzando la funzione VCS etichettatura build.

Labeling

Spero che questo aiuti.

+1

Voglio solo aggiungere che la configurazione di build separata è necessaria perché il patcher di informazioni di assemblaggio è in esecuzione dopo che sono state raccolte le modifiche da VCS e prima che i passaggi inizino a essere eseguiti. C'è un modo in cui puoi liberarti della configuraiton build separata per l'esempio precedente usando lo script di PowerShell che passa attraverso tutti i file AssemblyInfo.cs e sostituisce invece il patcher di assembly assembly: '(Get-childitem -include AssemblyInfo.cs -recurse) | Foreach-Object {Set-Content -Encoding UTF8 $ _ ((Get-content $ _) -replace "1.0.0.0", "1.0.0-% GitShortHash%")} '. –

+0

@Alexey. Sono d'accordo che potresti scrivere uno script per farlo in PowerShell, ma sarei molto cauto nel lasciar cadere questo codice in quanto è più probabile che si rompa la build. Per impostazione predefinita, AssemblyInfo.cs contiene AssemblyVersion e AssemblyFileVersion che non riuscirebbe a compilare se si utilizzava l'hash breve. Il AssemblyInfo.cs avrebbe bisogno di un po 'di "prepping" prima che questo script non interrompesse la compilazione. –

+0

@DevOps, hai ragione per il 100%. Ho lasciato il mio commento e l'esempio di script solo per prendere nota che è possibile farlo senza aggiungere un'altra configurazione di build che può essere problematica per smbd a causa delle limitazioni della licenza. Lo script PowerShell che ho pubblicato deve essere aggiornato per poter sostituire la versione solo per l'attributo richiesto. –

0

Se si intende l'assemblaggio .NET, non sarà possibile utilizzare l'hash breve di git come numero di revisione solo perché accetta solo numeri. Puoi verificarlo da solo e inserire la versione precedente in AssemblyVersion. Scommetto che la tua app non verrà compilata. Invece puoi usare% build.counter% variabile da teamcity come numero di revisione.

+3

È vero che non è possibile scrivere questo hash in determinati campi. Presumo che l'obiettivo qui sia quello di legare la versione dell'assembly al commit git, nel qual caso sarebbe sensato scrivere nella versione informativa dell'Assembly poiché accetta una stringa. –