如何使用Azure Devops和Cake Build在构建时自动标记和版本化?

时间:2019-04-15 16:19:40

标签: git azure-devops git-tag cakebuild gitversion

我正在使用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”(例如“ pre-release”等)?

我有点宽泛,但是我正在努力寻找在Cake Build中使用git版本控制和git标记并将其以有意义的方式连接到Azure DevOps的任何示例。预先感谢。

1 个答案:

答案 0 :(得分:0)

GitVersion具有默认的全局配置,该配置用于自动计算代码的语义版本。默认情况下,GitVersion受分支的GitFlow模型的影响很大。它还以最小的配置支持GitHubFlow。

GitVersion有一些文档here

对于GitFlow或GitHubFlow之外的任何事物,您都可以提供自己的配置。您还可以创建自定义分支配置(例如,针对未在GitFlow或GitHubFlow中使用的分支)。

他们的文档不是很好。它的组织不好。我发现我只需要玩弄才能真正理解它的工作原理。但是GitVersion非常灵活。

我鼓励您阅读文档并进行使用。您应该有可能在构建时根据对各个分支的提交来自动对代码进行版本控制,而无需人工干预(除了此处和此处的提交可能会迫使版本号在某些地方增加)。在不到15分钟的时间里,我为我完成了一些简单的设置,作为“最小可行概念”就足够了。并进行了一些进一步的调整,我相信我将能够立即将其用作正常构建过程的一部分。

关于标记,一旦您在Cake脚本中使用了GitVersion来计算版本,就可以从Cake脚本中发出命令以生成Git标签,也许是从获取输出的MajorMinorPatch属性中获取在您的代码库上运行GitVersion时,并从同一Cake脚本中发出git tag命令。