在nant脚本中使用Teamcity属性

时间:2014-02-25 09:44:33

标签: teamcity nant

我正在尝试在我的nant脚本中使用teamcity代理属性。当我使用teamcity运行构建时,这非常有效。但是,由于无法评估teamcity之外的属性,因此当我通过命令行运行nant时,脚本会失败。以下是示例代码 -

<?xml version="1.0"?>
<project name="script" default = "publish"> 
  <target name="publish">
    <echo message="${agent.home.dir}"/>
  </target>
</project>

我确信我遗漏了一些非常基本的东西。请帮助!

1 个答案:

答案 0 :(得分:0)

我在TeamCity中使用NAnt时遇到了类似的问题,因为它可以很好地从TeamCity运行它,但是如果你通过命令行进行构建它会失败,因为NAnt不知道那些TeamCity变量是什么。

我的解决方案很简单。由于我的构建需要与TeamCity进行交互的唯一一次是在TeamCity调用的构建期间,我给了用户关闭该功能的选项,如果需要从命令行运行它。

示例:

<property name="TeamCity.BuildFeatures" value="false" />

<if test="${bool::parse(TeamCity.BuildFeatures)}"  >
 <echo message="Your TeamCity variables like ##teamcity[] are ignored" />
</if>

希望这很有用..

根据评论编辑:

<property name="agent.home.dir" value="..\TeamCity\BuildAgent" />


  <exec program="msbuild.exe" basedir="${msbuilddir}" commandline="\testProject.csproj">
        <arg value="/property:Configuration=Release;Platform=x86"/> 
        <arg value="/verbosity:diagnostic"/> <arg value="Verbosity=diagnostic;Encoding=UTF-8"/>
     <if test="${property::exists('agent.home.dir')}" > 
        <arg value="/l:JetBrains.BuildServer.MSBuildLoggers.MSBuildLogger,${agent.home.dir}\p‌lugins\dotnetPlugin\bin\JetBrains.BuildServer.MSBuildLoggers.dll" if="${teamcity}" />
        </if>