语义版本控制和持续部署,在实践中相互冲突的想法?

Semantic versioning and continuous deployment, conflicting idea in practice?

有时版本信息必须嵌入到输出工件的元数据中。所以,版本要在build/compile时决定。

但是,在语义版本控制中实际发布之前,您不能调用版本,因为最后一位数字必须是增量的。

例如

一个发布过程有6个步骤。提交 1 和提交 2 触发了 2 个构建。

在提交 1 完成步骤 6 中的发布过程之前,您无法真正确定语义提交 2/构建 2 将是什么。如果提交 1/构建 1 失败,则提交 2/构建 2 将为 1.0.0。如果构建 1 成功,构建 2 将是 1.0.1.

如果您正在创作 nuget 包或 .net 二进制文件,版本信息将已经在工件本身中并且无法更改。

您描述的增量位数要求是否有意义?

即使构建 1 成功(因此根据您的描述验证了 v1.0.0),如果从测试预期来看它的结果是 DOA(比如产品不断崩溃),您仍然不会发布它。

那么 v1.0.0 和 deployed/shipped 之间有什么区别,因为它构建失败或因为它是 DOA? None据我所知

我只是放弃了这个要求,让事情变得更简单——每个构建都有自己的版本,基于相应的提交,有些版本不好(无论出于什么原因)。