语义发布:如何在分配版本号时避免种族条件



我正在考虑在我的GitLabCI构建过程中为C++应用程序实现语义发布。然而,我担心潜在的比赛条件。

首先,如果两个构建同时运行,并且在最近的提交中都具有相同的版本增量类型,如何防止语义发布为它们分配相同的版本号?语义发布是否会在分配版本号之前进行git标记刷新,以防它要分配的版本被挖走?

其次,我需要将版本号编译成二进制文件,因此我需要语义发布,以便在流程开始时为我的流程提供可用的版本号,然后为整个构建过程保留该版本号(约1小时(,然后在成功构建结束时发布该版本。我可以看到,语义发布支持干式运行模式,该模式将给出我的流程可以捕获的拟议版本号。然而,我看不出语义发布有任何方法可以在构建过程中保留版本号,所以另一个过程可以开始并使用相同的版本号,然后提前成功(无论出于何种原因(,并从它声称的版本号中欺骗第一个过程。

那么,在这些情况下,语义发布是否支持任何保留版本号的机制来避免这些竞争条件?

您可以通过使用原子发布来实现所需的一切。

查看使用gitSemanticRelease 的示例

使用它,你可以随时访问该版本。

最新更新