2017-02-27 50 views
1

我們打算關注Semantic Versioning我們的網絡應用程序,它看起來非常好。現在,詹金斯用作CI/CD工具。我們希望使用Octopus Deploy作爲工件存儲和CD工具,也用於快速重新部署/回滾和其他配置功能。如何根據語義版本自動增加Web應用程序版本?

八達通需要具有混凝土版本的軟件包(例如:1.2.4)。因此,我們還需要對我們的Web應用程序進行強大的版本控制否則,如何檢測部署的版本是否有錯誤。

解描述here不是透明的和不完全匹配於語義版本:

[assembly: AssemblyVersion("1.0.*")] 

因爲,補丁版本應遞增一個接一個的從0開始,不從「隨機」數,並在次要增量後重置。

對於我的意見 - 最好將版本存儲在存儲庫中與包中相同的視圖(1.2.4)中。但我發現如何實現它只有這種方式:

  • 手動增加前提交 - 不舒服,有風險。
  • 提交前自動增加SVN/Git掛鉤 - 需要配置每個工作站。
  • 從CI工具和提交自動增加 - 使用CI監視對存儲庫中的更改進行循環依賴。

是否有任何其他方式來實現與存儲庫中的平等版本控制,就像在Web應用程序的包中一樣?或者,也許這是不必要的?

UPDATE 2017-02-28:我們發現Jenkins可以跳過特定用戶或特定消息的提交(在高級設置中)。它解決了CI工具和提交自動遞增的問題(CI監視和存儲庫中的更改之間的循環依賴關係)。

+0

您的CD/CI管道的哪一部分產生八達通將消耗的軟件包? – gvee

+0

經過連續構建,Jenkins將軟件包打包並推送到八達通,並自動部署到開發環境。 –

+0

什麼運行構建?我問,因爲在我們的商店中,構建定義是版本設置的地方。也;你見過Jenkins的[這個插件](https://wiki.jenkins-ci.org/display/JENKINS/semantic-versioning-plugin)嗎? – gvee

回答

2

大多數開發人員未能在代碼中提交正確的彙編版本。比方說,如果你有40個項目和15個開發人員,然後維護[assembly: AssemblyVersion("1.0.*")]版本將永遠是一個問題。

我建議你可以結帳代碼,並做搜索&替換總是注入像[Major.Minor.Build]這樣的正確的程序集版本號。 [Major.Minor]作爲輸入並且對團隊全局感知,從而減少不良dll編號/內部編號可以正向遞增並與CI匹配以進行跟蹤。 SVN的commit號也可以和它混合使用。

+0

非常感謝,我得到了確認 - 將SemVer存儲在存儲庫中是個好主意。 :)我們發現Jenkins可以跳過特定用戶的提交(在高級設置中),它解決了CI監視和存儲庫中的更改之間的循環依賴關係問題。 –