2016-10-19 4 views
2

Я использую Cake с использованием GitVersion tool (GitHub project).ContinuedDelivery: информация о версии AssemblyInfo.cs с скриптом Cake и GitVersion

В настоящее время я только играл с моим build.cake:

#tool "nuget:?package=GitVersion.CommandLine" 

var target = Argument("target", "Default"); 

Task("Default") 
    .Does(() => 
{ 
    Information("Hello World!"); 

    GitVersion(new GitVersionSettings{ 
    UpdateAssemblyInfo = true, 
    OutputType = GitVersionOutput.BuildServer 
    }); 

    GitVersion versionInfo = GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json }); 
    Information("Version: " + versionInfo.NuGetVersion); 

    MSBuild("./CEST.sln"); 
}); 

RunTarget(target); 

Каждый раз, когда я запустить этот сценарий, GitVersion изменяет свой Properties\AssemblyInfo.cs файл. Таким образом, каждый раз, когда я выполняю этот скрипт, git предупреждает меня, что я изменил файл.

Как я мог избежать этого?

+0

Нет, не торт тег – Jordi

+0

Правильный тег для использования в этом случае будет 'cakebuild', но похоже, что david.s отредактировал вопрос, чтобы включить это. –

ответ

3

Немного опоздал на вечеринку, но здесь идет ...

Самый простой способ обойти эту проблему, было бы только запустить первоначальный вызов GitVersion, когда вы работаете на вашем Continuous Integration Server , (Я предполагаю, что вы используете сервер CI, в связи с использованием этого):

OutputType = GitVersionOutput.BuildServer 

Если это так, то, возможно, что-то, как это будет лучше соответствовать вашим потребностям:

Task("Default") 
    .Does(() => 
{ 
    Information("Hello World!"); 

    if (!BuildSystem.IsLocalBuild) 
    { 
     GitVersion(new GitVersionSettings { 
      UpdateAssemblyInfo = true, 
      OutputType = GitVersionOutput.BuildServer 
     }); 
    } 

    GitVersion versionInfo = GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json }); 
    Information("Version: " + versionInfo.NuGetVersion); 

    MSBuild("./CEST.sln"); 
}); 

Это Кстати, у вас все еще есть доступ к указанным номерам семантической версии при выполнении локальной сборки в объекте versionInfo, который вы можете использовать во всей остальной части сборки, однако обновление файла AssemblyInfo.cs не происходит, поэтому ваша проблема уходит.

Теперь, вы можете возразить, что вы хотите файл AssemblyInfo.cs обновляется с каждым новым семантической версии, однако, я бы сказал, что вы только потребности это, когда вы отправляете приложение, которое обычно случается только в результат сборки CI, а не локальной сборки.

Вы можете увидеть более глубокий пример этого в рамках проекта Cake.Recipe, что я работал на:

https://github.com/cake-contrib/Cake.Recipe/blob/develop/Cake.Recipe/Content/gitversion.cake

 Смежные вопросы

  • Нет связанных вопросов^_^