我試圖使用匯編信息補丁創建一個版本號是這樣的:TeamCity的9:如何添加git的短散到集信息修補
1.2.3.1a3c19e
其中最後一點是git短散列。
我試過使用powershell腳本構建步驟來創建短散列(因爲我找不到具有它的變量)並將此添加到系統變量,但此構建步驟似乎在程序集信息修補程序後運行,所以沒有多大用處。
我試圖使用匯編信息補丁創建一個版本號是這樣的:TeamCity的9:如何添加git的短散到集信息修補
1.2.3.1a3c19e
其中最後一點是git短散列。
我試過使用powershell腳本構建步驟來創建短散列(因爲我找不到具有它的變量)並將此添加到系統變量,但此構建步驟似乎在程序集信息修補程序後運行,所以沒有多大用處。
如果您想將其寫入到Assembly Info字段中,可以完成,但它需要單獨的生成配置來生成生成號。此步驟的唯一目的是創建附加散列的內部版本號。
1.創建構建配置以產生短散列
2.添加步驟以生成哈希
3.添加存儲散列的參數
4.添加第二構建配置和添加一個依賴於第一個
5.現在可以消耗在從屬步驟參數
6.在這一點上,你可以用它在裝配信息修補
的替代方式是使用VCS標籤構建功能來寫你的版本號回的Git。
希望這會有所幫助。
如果你的意思是.NET程序集,你將不能僅僅因爲它只接受數字而使用git的短哈希作爲修訂版本號。您可以自己檢查並將以上版本放到AssemblyVersion中。我敢打賭你的應用不會被編譯。相反,您可以使用teamcity中的%build.counter%變量作爲修訂版本號。
確實,您不能將此散列寫入某些字段。我假設這裏的目標是將程序集版本綁定到git commit,在這種情況下,它會寫入程序集信息版本,因爲它會接受一個字符串。 –
只是想補充說需要單獨的構建配置,因爲在從VCS收集更改並開始執行步驟之前,組件信息修補程序正在運行。有一種方法可以通過使用通過所有AssemblyInfo.cs文件並執行替換代替彙編信息修補程序的powershell腳本來擺脫上述示例中的分離的構建配置:'(Get-childitem -include AssemblyInfo.cs -recurse )| Foreach-Object {Set-Content -Encoding UTF8 $ _((Get-content $ _)--replace「1.0.0.0」,「1.0.0-%GitShortHash%」)}'。 –
@Alexey。我同意你可以寫一個腳本來做到這一點在powershell中,但我會非常謹慎的放棄這些代碼,因爲它更有可能打破構建。默認情況下,AssemblyInfo.cs包含AssemblyVersion和AssemblyFileVersion,如果使用短散列,將無法編譯。 AssemblyInfo.cs需要首先對該腳本進行一些「準備」,以免破壞構建。 –
@DevOps,你是對的100%。我已經留下了我的評論和腳本示例,只是爲了說明可以在不添加其他構建配置的情況下執行此操作,由於許可限制,smbd可能存在問題。我已經發布的powershell腳本必須更新,以便僅替換必需屬性的版本。 –