2015-10-15 66 views
3

我忙於配置新的TFS 2015服務器(內部)並試圖讓新的vnext構建正常工作。 我現在有一些額外的PowerShell腳本,可以增加我的程序集版本號。 它還通過調用API方法更改TFS中的構建編號(請參閱tfs rest api)。我的json主體只發送新的版本號(例如。{「buildNumber」:「1.0.1.1234」}),這工作正常。更新團隊基礎2015版本的構建定義API

現在我在版本的構建定義中添加了一些主要,次要和補丁版本變量。一旦構建完成,這應該更新,所以我想做同樣的事情,只是發送更新API調用到相應的builddefinition端點。該文件說修訂號是強制性的,所以我補充說。其餘的我只添加了變化的變量。 api調用的工作,但令人討厭的是,它會更新整個定義,並清除所有其他設置,我沒有在json主體中提供。我也試着先通過API獲取定義,改變變量的json值併發送回去,但那也沒有起作用。

那麼有沒有人知道這個好的解決方案?

作爲一個解決方法,我現在所做的是添加一個除了變量之外完全空的虛擬構建定義(例如「_ProjectVersion」),我的構建任務現在使用構建定義獲取最新版本號並更新它們。所以API調用仍然清空整個構建定義,但因爲它只包含我不介意的變量。

+0

對於你的問題:「但令人討厭的是它會更新整個定義並清除所有其他設置,我沒有在json主體中提供這些設置, ?以及我們可以用來嘗試重現您的問題的json文件上的任何細節? –

+0

我已經使用了一個類似'{id:2,revision:15,變量:{MajorVersion:{value:1},Minorversion:{value:'1}}的json body'}' 這樣只會保存這些值在構建定義中,並刪除我之前的所有設置(如所有構建步驟)。 我嘗試的另一種方法是首先在構建定義上進行GET。用我的值更改json響應,然後再返回。然後我得到異常消息,例如觸發器數組必須至少有一個值。 – chrisism

+0

@chrisism我也有和你一樣的問題。你會期望,如果你把API給了它確切的東西,它會給你工作,但顯然不是。我也試圖讓這個工作,所以我會更新你,如果我管理它。 –

回答

0

我也在PowerShell中這樣做,因爲所有的腳本都應該自動化並在PowerShell中完成。
我遇到的問題是,在PowerShell中管理API調用以獲取現有BuildDefinition的json時會返回無效的json。
例如,即使'json驗證器'可能報告爲有效,"@{multipliers=[];也會失敗,'必須至少有一個值'。正確的json是{"multipliers": "[]",

+0

是的,那也是我遇到的問題。它看起來不是正確的JSON。 我不得不說,放棄嘗試以正確的方式去做,並用空的_AppVersion構建模板去完善我仍然是完美的。因爲我有一個每晚構建和一個發佈版本,都需要這些版本號只使用一個模板就夠了。我不關心它每次都完全拆除,因爲我只需要訪問這些變量。 如果MS在構建API中添加了一些speciale變量支持,它仍然會很好。 – chrisism