如何根据语义版本控制自动增加Web应用程序版本?

时间:2017-02-27 10:07:15

标签: .net jenkins octopus-deploy semantic-versioning

对于我们的网络应用程序,我们将关注Semantic Versioning,它看起来非常好。现在,Jenkins用作CI / CD工具。我们希望将Octopus Deploy用作工件存储和CD工具,也用于快速重新部署/回滚和其他配置功能。<​​/ p>

Octopus需要具有混凝土版本的包装(例如: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监控和存储库更改之间的循环依赖关系)。

1 个答案:

答案 0 :(得分:2)

大多数开发人员未能在代码中提交正确的汇编版本。假设你有40个项目和15个开发人员,那么维护[assembly: AssemblyVersion("1.0.*")]版本将永远是个问题。

我建议您可以结帐代码并执行搜索&amp;替换以始终注入正确的组件构建号,如[Major.Minor.Build]。 [Major.Minor]作为输入并且全局意识到团队因此减少坏dll编号/内部编号可以正向增加并与CI的编号匹配以进行跟踪。 SVN提交号也可以与它混合使用。