我想在我的ASP.NET项目中集成一个自动版本控制系统。对于每个版本,它应该有一个基于上一个版本的版本号。我计划集成Gitversion https://gitversion.net/。有人在你的项目中使用过吗?对于CI/CD管道,我们有团队和章鱼部署。
自动化软件发布版本的最佳实践是什么?
提前感谢
发布于 2022-03-30 08:55:34
作为GitVersion的维护人员之一,我显然有偏见,但是由于您询问如何使用GitVersion来实现“自动化软件发布的最佳实践”,我将坦率地给您一个谈谈我喜欢如何使用GitVersion、TeamCity和八达通部署的软件进行版本和发布的问题的文本描述。
开发人员工作流
第一件事,你应该弄清楚是什么样的开发工作流程,您想为您的软件。GitVersion支持Git流和它的许多简化变体,以及GitHub流 (以及许多其他基于主干的开发流)。您应该选择哪种工作流取决于您正在开发的软件类型、您的团队以及最重要的是您的个人偏好。
一旦选择了工作流,就可以配置在哪个mode GitVersion下操作。
版本源
GitVersion通过计算Git存储库中的版本号来工作。这意味着您不应该向Git提交任何形状或形式的版本号。不在package.json、pom.xml、.csproj或任何其他通常要求存在版本号的与构建或项目相关的文件中。
版本化
相反,您应该允许GitVersion根据Git历史记录生成一个版本号,使用当前签出的提交作为它的起点,并搜索父母和他们的标记来计算当前提交的适当版本号。然后,可以在构建管道中以任意方式使用此版本号。例如,可以通过执行以下命令将GitVersion的变量写入package.json:
npm version $GitVersion_FullSemVer如果您是在.NET平台上进行开发,也可以使用文件,以便将计算出的版本号编译到程序集中。由于InformationalVersion包含Git提交的SHA正在构建和版本化,您将能够识别编译后的程序集的确切来源。
构建
一旦您有了您的工作流程,并且GitVersion有了一个很好的信息源可用于其版本控制,您就可以继续为您的软件创建一个构建管道。典型的构建管道如下所示:
git clone.(确保克隆是完整的,而不是浅的或分离的HEAD。请参阅要求以获得更多信息。)AssemblyInfo.cs、package.json等。npm、nuget、composer或类似软件)发布包。通过GitVersion对构建服务器的内置支持,计算出的版本号也将提升到生成服务器,以对生成本身进行版本化。例如,这将在TeamCity上自动完成。在TeamCity中,我建议您将GitVersion作为自己的构建配置来运行,公开所需的变量,这些变量随后可以在依赖的构建配置中使用。
发布
一旦您有了包含GitVersion生成的版本号的构建工件,您就可以在八达通部署中使用相同的版本号用于创建一个包、创建一个发行版和部署发行版。
发布于 2022-04-24 20:03:29
你说过你想集成一个自动版本控制系统?我想把我的帽子扔在拳击台上。
我是文蒂的作者,这是一个带有git集成的简单语义版本库。
@Asbj rn的回答已经告诉了您最佳实践,例如,选择适合您的项目的工作流。
主要部分是一个版本控制工具,如GitVesion或Vernuntii,它将基于(非)现有的git标记生成一个合适的下一个版本。
因此,在一天的最后,这是一个品味问题,你想要什么样的复杂性,如何计算下一个版本。
因此,当您想要跨分支版本控制时,您可以使用GitVersion,但是如果您不需要这种复杂性,那么您可以尝试一个分支版本控制,就像它是在文蒂中实现的那样。
想了解更多信息,请看一下凡尔南蒂的README.md。
在这里,为了给您我对版本控制工具及其复杂性的印象,让我给您一个列表(从最不复杂到最复杂的排序):
另一个有趣的事实是:从顶部到凡尔南蒂的所有库都允许从分离的头计算下一个版本。
https://stackoverflow.com/questions/71632279
复制相似问题