Версия сборки на основе объединенной ветки

Я хочу реализовать автоматическое семантическое управление версиями пакетов NuGet в качестве шага сборки VSTS (на самом деле внутри шага сборки торта). Проблема в том, что получить информацию о том, какая сборка ветки выполняется, легко (buildSystem.TFBuild.Environment.Repository.Branch), я понятия не имею, как получить информацию о том, какая ветка была объединена с мастером (ветвь исправления для версии исправления, или разработайте ветку с новой функцией для минора). Возможно ли это, или я должен признать, что каждое обновление версии потребует ручного редактирования Nuspec? Похоже, что gitflow имеет встроенный механизм для распознавания таких, например. на основе названий веток, но мы просто не используем его.


person RoboKnight    schedule 26.02.2018    source источник


Ответы (1)


Вы можете использовать инструмент GitVersion и псевдонимы для утверждения версии из истории/ветки git, пример использования:

    #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);
person devlead    schedule 26.02.2018
comment
Полностью согласен с предложенным подходом. Я использую GtiVersion в качестве основного инструмента именно для этой цели уже несколько лет. Ради честной игры парой других инструментов, которые обеспечивают аналогичную функциональность, будут github.com/AArnott/Nerdbank. .GitVersioning и это: github.com/fwinkelbauer/Bumpy - person Gary Ewan Park; 26.02.2018