【问题标题】:Why won't TeamCity run my Nant build file?为什么 TeamCity 不运行我的 Nant 构建文件?
【发布时间】:2009-03-28 05:36:59
【问题描述】:

我有一个简单的 NAnt 构建文件,它尝试从 subversion 对指定目录执行更新。测试构建文件内容的一个例子是:

<?xml version="1.0" ?>
<project name="Project_name" default="update">
<property name="root" value="C:\Subversion\UpdateDir" overwrite="false"/>
<property name="build.repos" value="http:/server/svnrepos" overwrite="false"/>
<property name="build.user" value="user" overwrite="false"/>
<property name="build.pwd" value="userpw" overwrite="false"/>
    <target name="update">
        <!-- Update all files to latest (head) revision from the repository -->
        <svn-update destination="${root}" uri="${build.repos}" username="${build.user}" password="${build.pwd}" commandline="-r HEAD -q --no-auth-cache"/>
    </target>
</project>

在 TeamCity(已配置为执行测试构建文件)中运行构建时,构建失败并从 Collabnet subversion 客户端 'svn.exe' 文件返回错误 1。

令人讨厌的是,NAnt GUI 可以运行构建文件而不会出错,所以我不明白 TeamCity 为什么会失败,因为我相信它使用与 NAnt GUI 相同的颠覆客户端和相同的 MS .net框架版本也是。

错误日志详情如下,错误与NAnt Contrib任务'svn-update'有关:

[16:01:56]: svn-update
[16:01:56]: [svn-update] svn: Working copy '.' locked
[16:01:56]: [svn-update] svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
[16:01:56]: C:\Subversion\ProjectBuilds\BuildFiles\Update0412.build(9,10): External Program Failed: C:\Program Files\CollabNet Subversion\svn.exe (return code was 1)
[16:01:56]: NAnt output: "C:\Program Files\NAnt-Gui\bin\NAnt.exe" -buildfile:C:\Subversion\ProjectBuilds\BuildFiles\Update0412.build -extension:C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NAntLoggers.dll -listener:JetBrains.BuildServer.NAntLoggers.NAntListener -D:teamcity.buildConfName=0412 -D:DotNetFramework1.1_Path=C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 -D:agent.home.dir=C:\BuildAgent "-D:agent.name=TeamCity Build Agent" -D:build.number=0.0.33 -D:teamcity.dotnet.nunitlauncher2.0=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher2.0.exe -D:teamcity.dotnet.platform=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.TeamCity.PlatformProcessRunner.1.1.exe -D:DotNetFramework1.1= -D:build.number.format=0.0.{0} -D:user.language=en -D:user.country=GB -D:os.version=5.1 -D:user.timezone=Europe/London -D:file.encoding=Cp1252 -D:file.separator=\ -D:agent.work.dir=C:\BuildAgent\work "-D:teamcity.projectName=Project 0412" -D:teamcity.dotnet.nunitlauncher2.0.vsts=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher2.0.VSTS.exe -D:os.arch=x86 -D:DotNetFramework1.1_x86_Path=C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 -D:DotNetFramework1.1_x86= -D:teamcity.build.tempDir=C:\BuildAgent\temp\buildTmp -D:teamcity.dotnet.coveragelauncher=C:\BuildAgent\plugins\dotnetPlugin\bin\TeamCityRunners\JetBrains.dotTrace.TeamCity.CoverageRunner.exe -D:build.vcs.number=5758 -D:teamcity.dotnet.nunitlauncher=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe -D:build.vcs.number.1=5758 -D:user.name=SYSTEM "-D:os.name=Windows XP" -D:build.vcs.number.0412=5758 "-D:teamcity.version=4.0 (build 8080)" -D:teamcity.dotnet.nunitaddin=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.TeamCity.NUnitAddin-NUnit -D:teamcity.auth.password=YVscypn9BG9okr0ojOES7LgevrD8Wpfp -D:idea.build.agent.port=9092 -D:teamcity.build.checkoutDir=C:\Subversion\ProjectBuilds\0412 -D:teamcity.buildType.id=bt2 -D:teamcity.auth.userId=TeamCityBuildId=36 -D:teamcity.dotnet.nunitlauncher1.1=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher1.1.exe -D:user.variant= -D:teamcity.agent.cpuBenchmark=107 -D:teamcity.dotnet.nunitlauncher.msbuild.task=C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MSBuildLoggers.dll -D:user.home=C:\ -D:idea.build.server.build.id=36 -D:path.separator=; -D:teamcity.build.workingDir=C:\Subversion\ProjectBuilds -D:teamcity.build.properties.file=C:\BuildAgent\temp\agentTmp\teamcity.build31597.properties update NAnt 0.85 (Build 0.85.2478.0; release; 14/10/2006) Copyright (C) 2001-2006 Gerry Shaw http://nant.sourceforge.net Buildfile: file:///C:/Subversion/ProjectBuilds/BuildFiles/Update0412.build Target framework: Microsoft .NET Framework 1.1 Target(s) specified: update update: [svn-update] svn: Working copy '.' locked [svn-update] svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) BUILD FAILED - 0 non-fatal error(s), 2 warning(s) C:\Subversion\ProjectBuilds\BuildFiles\Update0412.build(9,10): External Program Failed: C:\Program Files\CollabNet Subversion\svn.exe (return code was 1) Total time: 0.4 seconds.
[16:01:56]: Process exit code: 1

编辑:问题确实与 SVN 结帐处于某种状态有关。我通过允许 TeamCity 进行自己的结帐来修复它(同时我可能也进行了清理)。看起来 James Gregory 和 Ruben Bartelink 都是正确的!

【问题讨论】:

    标签: svn nant teamcity


    【解决方案1】:

    TeamCity 在运行构建的代理中拥有自己的结帐位置。错误消息指出该工作副本以某种方式变得混乱;如果构建失败并且正在更新中,有时会发生这种情况。我建议尝试在特定代理的工作副本中创建svn cleanup

    【讨论】:

      【解决方案2】:

      此外,如果您转到项目页面并从操作菜单中选择“强制执行干净签出”(或在项目设置中永久强制执行),它可能会让您克服这个问题(即,强制它获得一个干净的副本而不是获取增量的正常 [更快] 方法)。

      你也可以把工作目录吹走,看看能不能解决问题。

      【讨论】:

        【解决方案3】:

        TeamCity 支持代理上的 svn checkout。它能够在 build checkout 目录中自动调用 svn update。请在 build configuration settings/2.Version Control 下选择 checkout on agent。

        请查看文档页面 http://www.jetbrains.net/confluence/display/TCD4/Build+Checkout+Directory

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-18
          • 2013-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-30
          • 1970-01-01
          相关资源
          最近更新 更多