【问题标题】:Get svn revision and set it to assembly by Jenkins获取 svn 修订版并将其设置为由 Jenkins 组装
【发布时间】:2017-05-24 10:24:23
【问题描述】:

我在 Jenkins 中构建了我的第一个模型, 我试图通过变量 SVN_REVISION 获取 svn 修订版,但它不起作用。

我需要它在我的 assemblyInfo 文件中设置它。

我在谷歌上搜索了一下,一无所获。

请帮帮我!

【问题讨论】:

    标签: svn build .net-assembly revision


    【解决方案1】:

    您可以使用我们编写的flubu。 Flubu 是一个 C# 库,用于使用 C# 代码构建项目和执行部署脚本。

    更多关于flubu的信息可以在这里找到:Choice for build tool: MSBuild, NANT or something else?

    对于您的特定情况,您必须生成 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);
            }
    }
    

    然后您将在 cmd 或 jenkins 中使用 flubu runner 运行脚本作为构建步骤:build.exe compile

    您必须将生成的 CommonAssemblyInfo 包含到每个项目课程中。

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 2011-04-22
      • 1970-01-01
      • 2017-09-07
      • 2023-01-11
      • 1970-01-01
      • 2013-05-23
      • 2014-09-19
      • 1970-01-01
      相关资源
      最近更新 更多