我有幾個項目可以生成我發佈到內部服務器的NuGet包。我們使用semantic versioning,並在我們的Git存儲庫中使用標籤來控制版本號。如何僅爲標籤運行TeamCity構建?
我標記是這樣的:
git tag -a v1.0.0 -m "tagged"
並且,TeamCity的生成過程中,我運行git describe --long
,其產生這樣的輸出:
v1.0.0-0-ge9c047d
在輸出第四個數字是標籤後的提交數量。這裏的0
表示從標籤開始沒有提交。我使用前四個數字作爲版本號(順便說一句,整個字符串是AssemblyInformationalVersion)。
我有TeamCity軟件包併發布了一個NuGet軟件包,但這裏是粘滯的地方。我只想發佈標籤,從不提交標籤(因爲在這種情況下版本號是錯誤的,可能是非常錯誤的)。
我已經嘗試將VCS根目錄下的「分支規範」設置爲「+:refs/tags/*」,這會導致所有標籤都被構建,但TeamCity也堅持將「默認分支」構建爲好。如果我將「默認分支」設置爲不存在的東西,則會出現錯誤。
我曾經想過如果特定的構建不是標籤,但我不知道如何做到這一點,而不會失敗的構建,這是不是我想要的。
如何導致一個或多個構建步驟僅運行新標記而不是常規提交?
這很接近,但單擊「運行」按鈕仍會生成默認分支。 – Mark
這種情況下的預期行爲是什麼? –
好問題。我猜想* something *會運行,但在這種情況下,我不希望任何部署到NuGet服務器,也就是說,最終的構建步驟不會執行。理想情況下,構建不會*失敗*,只是不會導致部署任何工件。 – Mark