0

我正在尋找一種解決方案,以便在CI服務器(特別是Atlassian Bamboo)上每次構建後自動遞增包版本(不要與程序集版本混淆)。每個appx包都有一個在其清單文件(appxmanifest)中定義的版本。因此,爲了增加版本,必須在提交之前編輯清單。我正在考慮採用不同的方法來執行此操作第一個在清單中進行更改並將其推回回購。每次構建後自動遞增appx包版本

  1. 開始構建計劃(以便鎖定一版本號),使得修改被設置爲當前的版本號
  2. 將更改應用於SCM(尤其Atlassian的藏匿)
  3. :修改清單。這一步不應該觸發下一個構建。
  4. 繼續構建軟件包(調用的MSBuild,UT等任務)

缺點

  1. 信息不正確的工作流程上竹:結算 - >按 - >打造
  2. 每個構建作出新的承諾

另一種方法是設置郵政接收Stash掛鉤這將改變fy appxmanifest。

缺點很難保持與Bamboo同步的內部版本號。

是否有任何其他(更清潔和正確)的方式來實現這一目標?

回答

1

前藏匿開發商在這裏(這不是問題),

我會高度建議不要在導出/版本信息或文件的檢查。這會導致你無法解決問題(你在問題中已經指出了其中的一些問題)。

我的建議 - 生成你需要的構建信息。我對於appx包裝一無所知,但是你可以使用佔位符/屬性(如this),它可以在Bamboo構建中解析嗎?對於我們的構建,我們使用git hash和timestamp作爲版本,而且在過去,我也使用了作業/內部版本號(儘管時間戳更好)。

隨着更多的思考 - 如果該appx版本對於開發人員在本地查看很重要,並且很難與Git版本匹配,那麼您還可以將一個Git標記/註釋附加到Bamboo中的提交中。關於這一點的好處是,從Git獲取的任何人都可以輕鬆地看到額外的元數據,但不會導致每個構建的額外提交。如果appx版本需要基於以前的版本,那麼這使得構建腳本可以檢查先前的提交併適當地修改版本。

我希望有幫助。

+0

謝謝你的幫助。我設法通過使用帶佔位符的清單模板來解決問題。 [MSBuild Community Tasks](https://github.com/loresoft/msbuildtasks)項目中的TemplateFile任務然後在構建過程中從環境變量中獲取值並生成appxmanifest。 – IUnknown 2014-10-21 06:44:57