我们将关注Semantic Versioning用于我们的Web应用程序,它看起来非常好。现在,Jenkins用作CI / CD工具。我们希望使用Octopus Deploy作为工件存储和CD工具,也用于快速重新部署/回滚和其他配置功能。
八达通需要具有混凝土版本的包装(例如:1.2.4)。因此,我们还需要针对Web应用程序进行强版本控制。否则,如何检测已部署的版本并具有错误。
解决方案描述here不透明,与语义版本控制不完全匹配:
[assembly: AssemblyVersion("1.0.*")]
因为,Patch版本应该从0逐个递增,而不是从“随机”数字递增,并在Minor递增后重置。
对于我的观点 - 最好将版本存储在存储库中与包中相同的视图(1.2.4)中。但我发现只有这样才能实现它:
是否有其他方法可以实现与存储库中相同的版本控制,就像在Web应用程序包中一样?或者这可能是不必要的?
更新2017-02-28:我们发现Jenkins可以跳过特定用户或特定消息的提交(在高级设置中)。它解决了CI工具和提交的自动增量问题(CI监视和存储库中的更改之间的循环依赖性)。
大多数开发人员未能在代码中提交正确的汇编版本。让我们说如果你有40个项目和15个开发人员那么维护[assembly: AssemblyVersion("1.0.*")]
版本将永远是一个问题。
我建议您可以签出代码并执行搜索和替换以始终注入正确的程序集内部版本号,如[Major.Minor.Build]。 [Major.Minor]作为输入并且全局意识到团队因此减少坏dll编号/内部编号可以正向增加并与CI的编号匹配以进行跟踪。 SVN提交号也可以与它混合使用。