Получите SVN-ревизию и установите ее на сборку от Jenkins

Я строю свою первую модель в Jenkins, я пытался получить ревизию svn с помощью переменной SVN_REVISION, но она не работает.

Мне нужно это установить в моих файлах AssemblyInfo.

Я сделал поиск в Google и получил ничего.

Пожалуйста, помогите мне!

1 ответ

Вы могли бы использовать грипп, который мы написали. Flubu - это библиотека A C# для создания проектов и выполнения сценариев развертывания с использованием кода C#.

Подробнее о flubu можно найти здесь: Выбор инструмента для сборки: MSBuild, NANT или что-то еще?

Для вашего конкретного случая вам нужно сгенерировать CommonAssemblyInfo или обновить каждую информацию AssemblyInfo с помощью пользовательской задачи. Я приведу пример, как это сделать с CommonAssemblyInfo:

public class BuildScript : DefaultBuildScript
 {
        protected override void ConfigureBuildProperties(IBuildPropertiesContext context)
        {
            context.Properties.Set(BuildProps.CompanyName, "Company");

            context.Properties.Set(BuildProps.ProductId, "ProductId");
            context.Properties.Set(BuildProps.ProductName, "ProductName");
            context.Properties.Set(BuildProps.SolutionFileName, @"Solution.sln");
            context.Properties.Set(BuildProps.BuildConfiguration, "Release");
        }

        protected override void ConfigureTargets(ITaskContext context)
        {
            var loadSolution = context.CreateTarget("load.solution")
                .SetDescription("Load & analyze VS solution")
                .AddTask(x => x.LoadSolutionTask())
                .SetAsHidden();

            var fetchVersion = context.CreateTarget("fetch.version")
                .SetDescription("Fetch the build version")
                .Do(TargetFetchBuildVersion);

            var generateCommonAssInfo = context.CreateTarget("generate.commonAssInfo")
             .DependsOn(fetchVersion)
             .TaskExtensions()
                .GenerateCommonAssemblyInfo()
                .BackToTarget();

           var compile = context.CreateTarget("compile")
                .AddTask(x => x.CompileSolutionTask())
                .DependsOn(loadSolution, generateCommonAssInfo);
        }

        public static void TargetFetchBuildVersion(ITaskContext context)
        {
            var version = context.Tasks().FetchBuildVersionFromFileTask().Execute(context);
            string svnRevisionNumberString = Environment.GetEnvironmentVariable("SVN_REVISION");
            int svnRevisionNumber = 0;

            if (!string.IsNullOrEmpty(svnRevisionNumberString))
            {
                svnRevisionNumber = int.Parse(svnRevisionNumberString, CultureInfo.InvariantCulture);
            }

            version = new Version(version.Major, version.Minor, version.Build, svnRevisionNumber);
            context.Properties.Set(BuildProps.BuildVersion, version);
        }
}

Затем вы должны запустить скрипт с помощью flubu runner в cmd или jenkins в качестве шага сборки: build.exe compile

Вы должны включить сгенерированный CommonAssemblyInfo в каждый проект.

Другие вопросы по тегам