2015-11-11 41 views
3

我有我的版本號格式指定爲:VSO建設vNext - NuGet包生成步驟 - 使用版本號爲版本包

$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) 

這就造成了「BuildDefinitionName_2015.11.11.1」

的格式版本號

其中修訂似乎是構建在當天運行的次數。

我希望能夠在進一步的構建步驟中使用此值。

比如我創建一個NuGet包用的NuGet打包步驟,並且使用選項很「使用版本號爲版本包」

這造成我包與此類似「PackageName.2015.11.11.1.nupkg 「

然後我想使用nuget publisher build步驟來發布這個,但問題是隨着時間的推移,您會在軟件包文件夾中獲得多個軟件包,並且nuget publisher步驟使用模式來匹配要發佈的軟件包。

  • 「PackageName.2015.11.11.1.nupkg」
  • 「PackageName.2015.11.11.2.nupkg」
  • 「PackageName.2015.11.11.3.nupkg」

不明確要發佈的文件,發佈者步驟將發佈所有這些文件。

我不想要這個,我只是希望它發佈匹配當前版本號的文件。

所以我想能夠在模式中設置內部編號部分。

PackageName.$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r).nupkg

但現在看來,這些變量沒有得到在搜索路徑取代和作爲文字匹配才能通過。

看起來很奇怪,在nuget包裝步驟中,它可以讓你選擇按內部編號創建包裝,但是不允許你在nuget publish build步驟中匹配這個包裝。

回答

3

Nuget Packager步驟使用PowerShell腳本獲取內部版本號。源代碼在這裏:https://github.com/Microsoft/vso-agent-tasks/blob/84746169f19b7c3e3f67c0efa1a546c4107055fa/Tasks/NugetPackager/NuGetPackager.ps1

如果您確實想將構建號碼轉移到Nuget Publish,您可以在構建過程中添加PowerShell步驟以獲取構建版本號。有關詳細信息,請參閱源代碼中的構建版本相關代碼。

而在PowerShell腳本的末尾添加代碼:

Write-Host "##vso[task.setvariable variable=bversion;]$NewVersion" 

此代碼創建一個變量「bversion」充滿編譯版本號。然後你可以在你的Nuget Publish步驟中使用變量$(bversion)。

+0

非常感謝! – Kramer00

+0

另一種方法是在這個answare解釋http://stackoverflow.com/questions/36630654/vsts-build-could-not-find-version-number-data-in-build-buildnumber – Flatlineato

0

我會建議在每個構建中完成對源代碼的清理檢查,這將解決在後續構建中存在舊包文件的問題。

否則有它包含了版本號的擴展價值$(build.buildnumber)可變的,但只要你有額外的內部版本號$(BuildDefinitionName),您將無法使用它文件名。有關可用的預定義變量的列表,請參閱here

+0

我同意我已經想過確保在每個構建的開始時都沒有任何東西存在,我現在正在做這個解決方法,我覺得很奇怪,這是包裝步驟中的明確選項,但您無法制作在發佈步驟中使用它。 – Kramer00

+0

您在NuGet Publisher中輸入模式的問題是隻擴展了變量(例如變量頁面上定義的變量)。 不支持像$(Year),$(Month),$(DayOfMonth)和$(Rev)這樣的內部版本號格式的特定變量。你可以填寫一個問題[這裏](https://github.com/Microsoft/vso-agent-tasks/issues) –