Jenkins DevOps 实践之持续集成时打Label

这篇文章记录了如何优雅的在持续集成的过程中打Label.如有不对欢迎指正。

0. 我们准备好Solution如下图所示一个普通.NET程序:

1. 我们添加一个名为VersionInfo.cs文件, 放在SolutionItems 文件夹中。这个文件用来给所有的项目共享。

这个文件其实就只有这么一句话,让后把所有其他项目中的 “Properties\AssemblyInfo.cs”中以下代码注释掉或者直接删掉因不会再用到了。

//[assembly: AssemblyVersion("1.0.0.0")]

2. 将VersionInfo.cs文件已链接的形式加到每个项目额Properties文件夹中,如步骤0的截屏所示。这一步的作用就是让所有的项目使用同一个版本号。如此Jenkins修改版本好就只要改一个文件了。

3. 修改WebSite的项目文件,在项目文件(.csproj)最后加上Target标记如下图所示

 <Target Name="BeforeBuild">    
    <WriteLinesToFile Condition=" '$(AsmVersion)' != '' " File="..\VersionInfo.cs" Overwrite="True" Lines="[assembly: System.Reflection.AssemblyVersion(&quot;$(AsmVersion)&quot;)]">
    </WriteLinesToFile>
  </Target>

聪明的你肯定注意到 “$(AsmVersion)“ 这个标记用给MSBuild传递参数。

4. 回到Jenkins,

  a. 首先我们得安装好Version NUmber plugin。

  b. 下载TEE-clc https://github.com/Microsoft/team-explorer-everywhere/releases

注意运行TEE需要JDK。请自行安装

5. 配置Version Number Plugin

6. 配置build Step。 给当前build的代码打Label, 代码如下图所示。为毛不用TF.EXE原因是因为这货要用太麻烦。只有这个步骤放在那一步,请自行决定没有标准。下图中我将build Number作为Label名称,有利于后面发现问题找到到对应代码。

7. 把AssemblyVersion 的Number替换掉:

"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" "%WORKSPACE%\proj.sln" /target:rebuild /p:AsmVersion=%VERSION%

8. 最后建议在网页上把Version 号码显示出来。这个例子用的是MVC,可将下面代码放在View的某个角落:

version:@ViewContext.Controller.GetType().Assembly.GetName().Version Date:@File.GetCreationTime(ViewContext.Controller.GetType().Assembly.Location)

 

 

  

 

posted @ 2017-02-24 17:30  小搬码工  阅读(1897)  评论(0编辑  收藏  举报