语义版本控制 - 传统 Web 应用程序的主要版本

Semantic versioning - major version for a traditional web application

我有一个 Rails 应用程序,它是一个传统的 Web 应用程序(处理 HTTP 请求并呈现 HTML 页面)。截至目前,它没有向其他应用程序公开的 API。

我想使用 semantic versioning 对应用程序进行版本控制。目前它是'0.0.0'。

引用文档:

MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.

据我了解,因为没有依赖我的应用,所以大版本是不会变的。只有小版本和补丁版本会改变,大版本永远是0.

我想知道我的理解是否正确。我的主要版本是否会发生变化?

由于您不是在开发和发布软件包,因此不能直接应用语义版本控制。听起来单个 "release" 数字就足以满足您的用例,因为您需要的是跟踪代码更改何时进行测试和生产。假设代码在投入生产之前必须经过测试,那么每当您使用开发分支中的代码更新测试环境时,您都会更新该数字。这样,在给定的时刻,开发将发布 N,测试将发布 N-1,生产 N-2。

API 版本控制是一个不同的问题,与版本编号无关。根据我的经验 API 用户只关心重大更改,因此需要对这些更改进行版本控制。此外,由于用户更新他们的应用程序的速度很慢,因此您必须准备好无限期保留旧版本。

您可以考虑的一种方法是将用户通过应用程序的流程视为版本控制的基础。如果发生破坏性变化(即用户流的改变使得旧路由不可能),那么它可以被认为是破坏性的。如果您要添加以前不存在的新功能(即用户可以访问新功能或在网站上看到他们可以与之交互的新内容),则可以将其视为次要版本增加。如果您要对文本等内容进行小的修复,则可以将其视为 patch-level 更改。

不过,这种方法的问题是您需要通过应用程序了解用户的工作流程,以便能够正确地增加主要版本,而作为软件开发人员,我们仍然很难正确地做到这一点。

参考:https://christianlydemann.com/versioning-your-angular-app-automatically-with-standard-version