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