首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何集成Gitversion

如何集成Gitversion
EN

Stack Overflow用户
提问于 2022-03-26 22:26:05
回答 2查看 223关注 0票数 1

我想在我的ASP.NET项目中集成一个自动版本控制系统。对于每个版本,它应该有一个基于上一个版本的版本号。我计划集成Gitversion https://gitversion.net/。有人在你的项目中使用过吗?对于CI/CD管道,我们有团队和章鱼部署。

自动化软件发布版本的最佳实践是什么?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-30 08:55:34

作为GitVersion的维护人员之一,我显然有偏见,但是由于您询问如何使用GitVersion来实现“自动化软件发布的最佳实践”,我将坦率地给您一个谈谈我喜欢如何使用GitVersion、TeamCity和八达通部署的软件进行版本和发布的问题的文本描述。

开发人员工作流

第一件事,你应该弄清楚是什么样的开发工作流程,您想为您的软件。GitVersion支持Git流和它的许多简化变体,以及GitHub流 (以及许多其他基于主干的开发流)。您应该选择哪种工作流取决于您正在开发的软件类型、您的团队以及最重要的是您的个人偏好。

一旦选择了工作流,就可以配置在哪个mode GitVersion下操作。

版本源

GitVersion通过计算Git存储库中的版本号来工作。这意味着您不应该向Git提交任何形状或形式的版本号。不在package.jsonpom.xml.csproj或任何其他通常要求存在版本号的与构建或项目相关的文件中。

版本化

相反,您应该允许GitVersion根据Git历史记录生成一个版本号,使用当前签出的提交作为它的起点,并搜索父母和他们的标记来计算当前提交的适当版本号。然后,可以在构建管道中以任意方式使用此版本号。例如,可以通过执行以下命令将GitVersion的变量写入package.json

代码语言:javascript
复制
npm version $GitVersion_FullSemVer

如果您是在.NET平台上进行开发,也可以使用文件,以便将计算出的版本号编译到程序集中。由于InformationalVersion包含Git提交的SHA正在构建和版本化,您将能够识别编译后的程序集的确切来源。

构建

一旦您有了您的工作流程,并且GitVersion有了一个很好的信息源可用于其版本控制,您就可以继续为您的软件创建一个构建管道。典型的构建管道如下所示:

  1. git clone.(确保克隆是完整的,而不是浅的或分离的HEAD。请参阅要求以获得更多信息。)
  2. GitVersion.通过GitVersion执行无论哪种方法对你的环境最有意义。
  3. Patch.将GitVersion在步骤2中创建的版本号修补到存储库中的每个有意义的文件中,如AssemblyInfo.cspackage.json等。
  4. 构建。执行软件的构建。
  5. Test.运行确保软件质量的测试。
  6. .使用GitVersion在步骤2中创建的版本号创建软件包。
  7. 释放。使用您选择的包管理软件(如Octopus、npmnugetcomposer或类似软件)发布包。
  8. Test.如果可能的话,对发布的软件执行自动测试。如果成功,则可以自动将推广发布的软件发送到其他环境(如果适用)。

通过GitVersion对构建服务器的内置支持,计算出的版本号也将提升到生成服务器,以对生成本身进行版本化。例如,这将在TeamCity上自动完成。在TeamCity中,我建议您将GitVersion作为自己的构建配置来运行,公开所需的变量,这些变量随后可以在依赖的构建配置中使用。

发布

一旦您有了包含GitVersion生成的版本号的构建工件,您就可以在八达通部署中使用相同的版本号用于创建一个包创建一个发行版部署发行版

票数 1
EN

Stack Overflow用户

发布于 2022-04-24 20:03:29

你说过你想集成一个自动版本控制系统?我想把我的帽子扔在拳击台上。

我是文蒂的作者,这是一个带有git集成的简单语义版本库。

@Asbj rn的回答已经告诉了您最佳实践,例如,选择适合您的项目的工作流。

主要部分是一个版本控制工具,如GitVesion或Vernuntii,它将基于(非)现有的git标记生成一个合适的下一个版本。

因此,在一天的最后,这是一个品味问题,你想要什么样的复杂性,如何计算下一个版本。

因此,当您想要跨分支版本控制时,您可以使用GitVersion,但是如果您不需要这种复杂性,那么您可以尝试一个分支版本控制,就像它是在文蒂中实现的那样。

想了解更多信息,请看一下凡尔南蒂的README.md

在这里,为了给您我对版本控制工具及其复杂性的印象,让我给您一个列表(从最不复杂到最复杂的排序):

  • MinVer
  • 珍珠岩
  • 文蒂
  • Nerdbank.GitVersioning
  • GitVersion

另一个有趣的事实是:从顶部到凡尔南蒂的所有库都允许从分离的头计算下一个版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71632279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档