如果Git Workflow 具有增量版本控制的特性,为什么我们需要语义版本控制?

Why we need semantic versioning if Git Workflow has the feature of incremented versioning?

我目前正在学习如何在 Jenkins/Maven/Git 中为我的项目实现语义版本控制,我今天阅读了 this article,看来我们可以使用 Gitflow 自动获得增量版本控制,那么使用语义版本控制有什么意义呢?

我都是新手,还在摸索它们之间的关系,在网上找了几天,没有关于如何实现SV的例子和教程,我也看了this article ,我了解 SV 是什么,但仍然不知道它如何链接到 Jenkins/Maven/Git。我找到了一个名为 semantic-versioning-plugin 的 Jenkins 插件,但找不到任何关于如何实现它的相关信息。

我也尝试更改 Jenkinsfile 中的配置,但它只会在每次推送到 Git 后更改 build_number,但这不是我想要的,我希望版本遵循规则在 SV。

如果有人能解释一下或举个例子让我看看就太好了。非常感谢。

SemVer 与特定技术无关。您可以使用 SemVer 来描述蛋糕食谱的演变。 SemVer 只是一种命名方案。

  • 当你完全重做蛋糕配方时,你撞到了主要版本,所以它是日志形状而不是标准层形状。
  • 您在添加新功能时遇到了次要版本 - sprinkles
  • 当你解决了厨师加太多盐导致味道变差的问题时,你提高了补丁版本。

各种技术会尝试根据 SemVer 组织您的软件版本,但不要将其与特定工具的行为混淆。

SemVer 用于通知您的客户更新的上下文。 因此,如果您的软件当前的版本为 1.0.0,而您想要发布更新,则可以通过以下选项来增加版本:

  1. 如果您刚刚修复了一些错误,请增加 PATCH (1.0.1)。
  2. 如果您添加了一些新功能,请增加 MINOR (1.1.0)。
  3. 增加 MAJOR (2.0.0) 如果您删除了一些功能或引入了 重大更改

这样一来,您的客户就可以确切地知道会发生什么,他们甚至可以自动执行更新过程。

要在您的工作流程中实施此模式,您只需在每次发布更新时手动增加版本即可。但是您也可以(并且可能应该)使用自动为您执行此操作的工具。大多数工具结合使用 git tags and either commit messages 或手动触发器来实现这一点。

也许这对您来说很有趣:https://blog.armesto.net/automatically-versioning-your-application-on-jenkins-x/

如果您想了解有关 SemVer 的更多信息,我也可以推荐 Stephan Bönnemann 的演讲:https://www.youtube.com/watch?v=tc2UgG5L7WM