5

我正在使用 Cake 脚本通过持续集成在 Azure DevOps 中构建我的软件。要求是当我们提交/合并到 dev 或 master 分支时,适当的构建管道被启动。作为此构建的一部分,我们需要自动标记和版本我们的软件。我的蛋糕脚本中已经有以下代码,可以使用 GitVersion 将语义版本控制添加到我的构建中:

Task("Version")
    .Does(() => 
    {
        Information("Versioning software for configuration {0} of {1}...", configuration, solution);
        GitVersion(new GitVersionSettings {
            UpdateAssemblyInfo = true,
            OutputType = GitVersionOutput.BuildServer,
            WorkingDirectory = toolsDirectory
        });
        GitVersion versionInfo = GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json });

        Information("Semantic Version: " + versionInfo.AssemblySemVer);
        Information("Full Semantic Version: " + versionInfo.AssemblySemFileVer);
        Information("Informational Version: " + versionInfo.InformationalVersion);
    });

我希望团队负责人或权威人士在此代码与分支合并之前增加主要和次要构建版本。或者我希望管道自动对软件和我们在构建管道结束时创建的最终 zip 工件进行版本控制。

所以这是我的问题:

  1. 如何自动增加我的版本号和标签?
  2. 我应该避免自动递增吗?
  3. 如何在 Azure DevOps 构建过程中将版本号添加到我的项目名称中?
  4. 我需要在我的 git 版本代码中进行哪些更改才能使用这些标签?
  5. 如何添加后缀以使版本控制和标记更像“git flow”(例如“预发布”等)?

我这有点宽泛,但我很难找到在 Cake Build 中使用 git 版本控制和 git 标记并将其以有意义的方式连接到 Azure DevOps 的任何示例。提前致谢。

4

1 回答 1

1

GitVersion 有一个默认的全局配置,用于自动计算代码的语义版本。默认情况下,GitVersion 深受 GitFlow 分支模型的影响。它还支持 GitHubFlow,只需对其配置进行最少的更改。

GitVersion这里有一些文档。

对于任何远离 GitFlow 或 GitHubFlow 的人迹罕至的地方,您都可以提供自己的配置。您还可以创建自定义分支配置(即用于 GitFlow 或 GitHubFlow 中未使用的分支)。

他们的文档不是很好。它组织得不好。我发现我只需要玩弄一些东西才能真正理解它是如何工作的。但是 GitVersion 相当灵活。

我鼓励您阅读文档并使用它。您应该可以在构建时根据您对各个分支的提交自动对代码进行版本控制,而无需人工干预(除了可能在这里和那里提交以强制版本号在某些部分发生冲突)。我在 15 分钟内完成了一些简单的设置,这对于最小可行概念来说已经足够好了。通过更多的调整,我相信我可以立即开始使用它作为我正常构建过程的一部分。

至于标记,一旦你在 Cake 脚本中使用 GitVersion 来计算版本,你可以从 Cake 脚本中发出一个命令来生成一个 Git 标记,也许是从在你的代码库MajorMinorPatch运行时获取输出的属性GitVersion,然后发出git tag来自同一个 Cake 脚本的命令。

于 2020-03-10T15:06:11.267 回答