在MSBuild步骤中使用Jenkins版本环境变量

时间:2012-09-10 04:30:28

标签: msbuild jenkins jenkins-plugins

我目前正在使用Jenkins“Version Number Plug-In”为构建版本设置环境变量。这在jenkins中工作正常,但我需要一种方法将其传递给MSBuild,以便更新exe和dll的版本号。我尝试了下面的配置,但它没有更新构建版本

Version Number Config

Build Config

5 个答案:

答案 0 :(得分:5)

环境变量名称应写为,不带百分号('%'),如下所示:

VERSION
除此之外,我认为你很高兴。

也可以考虑改变
${BUILDS_ALL_TIME}
 到
${BUILDS_ALL_TIME, XX}

(这将使用前导零强制执行两位数的构建号码)

答案 1 :(得分:2)

这是一个MSBuild目标,用Jenkins的SVN_REVISION变量替换文件GlobalAssemblyInfo.cs中的修订号。

我们有一个多项目解决方案,其中每个项目引用相同的GlobalAssemblyInfo以获取常见信息(如版本)。修改它以使其适合您的设置。

通过具有Exists条件,目标在未安装MSBuildCommunityTasks的开发人员计算机上执行。 在这些情况下,GlobalAssemblyInfo.cs中的版本号保持不变。

<Target Name="InjectSVNRevision" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')">
<!-- When this build is done by the Jenkins CI server; the svn revision number is set in the environment variable SVN_REVISION
     This little snippet replaces the revision number in GlobalAssemblyInfo.cs with this svn revision number
  -->
<Message Text="Injecting SVN revision number in GlobalAssemblyInfo.cs" />
<FileUpdate Files="GlobalAssemblyInfo.cs"
    Multiline="true"
    Singleline="false"
    Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)\(&quot;([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?&quot;\)"
    ReplacementText="$1(&quot;$2.$(SVN_REVISION)&quot;)" 
    Condition="$(SVN_REVISION) != '' "/>
</Target>

答案 2 :(得分:1)

我发现这样做的最简单方法是使用Change Assembly Version。使用该插件,您只需提供版本号(或使用的环境变量),它将在工作区中的所有AssemblyInfo.cs文件中替换它。

答案 3 :(得分:0)

快速解决此问题的方法是在msbuild任务之前创建一个PowerShell任务。这假设你定义了如上所述的VERSION变量(没有%%)。并且在构建开始之前检查了删除工作区。

这是powershell任务的代码。

 nav {
     width: 100%;
     height: 40px;
     background: -webkit-linear-gradient(#3f9a15, #388813, #3f9a15, #388813, #3f9a15);
     background: -o-linear-gradient(#3f9a15, #388813, #3f9a15, #388813, #3f9a15);
     background: linear-gradient(#3f9a15, #388813, #3f9a15, #388813, #3f9a15);
     border-radius: 6px !important;
     -moz-border-radius: 6px !important;
        }
.nav a{
    color: white !important;
    font-size: 1.8em !important;
    }
.nav li{
    padding-right:5px;
   }

答案 4 :(得分:0)

以下是我的总结,使其发挥作用:

安装此插件:

https://plugins.jenkins.io/versionnumber/
https://plugins.jenkins.io/change-assembly-version-plugin/

确保您的 AssemblyInfo.cs 包含:

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

设置您的版本变量名,不带“$”。

定义一个不错的版本号,例如:'1.1.${BUILD_NUMBER}.${SVN_REVISION}'

enter image description here

添加“更改程序集版本”-构建步骤。 在 '${...}' 示例中输入您的变量:'${VERSION}' enter image description here

如果您仍然遇到构建错误。检查您的项目文件和 AssemblyInfo.cs 是否存在合并冲突。