Nuget 基于合并的分支生成版本

Nuget 基于合并的分支生成版本,nuget,azure-devops,semantic-versioning,cakebuild,gitversion,Nuget,Azure Devops,Semantic Versioning,Cakebuild,Gitversion,我想在VSTS构建步骤中(实际上在cakebuild步骤中)实现NuGet包的自动语义版本控制。问题是,虽然获取正在执行的分支构建很容易(buildSystem.TFBuild.Environment.Repository.branch),但我不知道如何获取关于哪个分支合并到主分支的信息(修补程序版本的热修复分支,或者使用新功能开发次要分支)。这是可能的,还是我应该接受每个版本更新都需要手动Nuspec编辑?gitflow似乎有内置的机制来识别这些,例如基于分支名称,但我们只是不使用它 您可以利

我想在VSTS构建步骤中(实际上在cakebuild步骤中)实现NuGet包的自动语义版本控制。问题是,虽然获取正在执行的分支构建很容易(buildSystem.TFBuild.Environment.Repository.branch),但我不知道如何获取关于哪个分支合并到主分支的信息(修补程序版本的热修复分支,或者使用新功能开发次要分支)。这是可能的,还是我应该接受每个版本更新都需要手动Nuspec编辑?gitflow似乎有内置的机制来识别这些,例如基于分支名称,但我们只是不使用它

您可以利用工具和别名从git history/branch断言版本,例如用法:

    #tool "nuget:https://api.nuget.org/v3/index.json?package=GitVersion.CommandLine&version=3.6.2"
    if (!BuildSystem.IsLocalBuild)
    {
        GitVersion(new GitVersionSettings{
            OutputType = GitVersionOutput.BuildServer
        });
    }



    GitVersion assertedVersions = GitVersion(new GitVersionSettings
    {
        UpdateAssemblyInfoFilePath = "./src/Project/AssemblyInfo.cs",
        UpdateAssemblyInfo = true,
        OutputType = GitVersionOutput.Json,
    });

    version = assertedVersions.MajorMinorPatch;
    semVersion = assertedVersions.LegacySemVerPadded;
    milestone = string.Concat("v", version);

我完全同意这一建议。几年来,我一直使用gDiversion作为我的go-to工具来实现这一目的。为了公平竞争,提供类似功能的两个其他工具如下: