解决方案由Jenkins构建时批处理文件失败,但在通过命令行构建解决方案时可以正常工作

时间:2013-07-04 11:56:53

标签: visual-studio-2012 batch-file msbuild jenkins

问题

我有一个正在从Pre-Build事件中调用的批处理文件。 当解决方案由 Jenkins 构建时,失败 在命令行中从 MSBuild visual studio 构建解决方案时正常工作
我的问题是,什么可能导致这种行为?

详细

在我的解决方案(.Net 4.5和C ++项目)中,我有一个批处理文件,该文件是从项目的一个预构建事件中调用的。
它工作正常,除非我试图通过Jenkins(CI服务器)构建解决方案。 错误是:

  

命令“”C:\ Jenkins \ apps \ jenkins \ jenkins_home \ jobs \ Builld_SMW2 \ workspace \ Autosync \ CopySymAlignFiles.bat“”C:\ Jenkins \ apps \ jenkins \ jenkins_home \ jobs \ Builld_SMW2 \ workspace \“” C:\ Jenkins \ apps \ jenkins \ jenkins_home \ jobs \ Builld_SMW2 \ workspace \ Autosync \“”Debug“”退出,代码为1。

从错误报告中,我复制了用于尝试构建解决方案的命令:

  

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe / p:Platform = x86 / p:configuration = Debug / t:Rebuild / verbosity:quiet / p:WarningLevel = 0 / p: Platform = x86 / p:configuration = Debug / t:Rebuild / verbosity:quiet / p:WarningLevel = 0 .. \ SMW2_Analysis.sln

(我知道这些论点被传了两次,我不知道为什么詹金斯会这样做,但这不是问题...)

如果我从命令行运行此命令,则一旦触发构建事件,批处理文件就可以正常工作。

CopySymAlignFiles.bat的内容是:

  

回声   set solutionDir =%1
  设置projectDir =%2
  设置配置=%3

     

REM删除引号
  set solutionDir =%solutionDir:“=%
  set projectDir =%projectDir:“=%
  set configuration =%configuration:“=%

     

REM字符串是否有斜杠?如果是这样的话将它移除   IF%solutionDir:〜-1%== \ SET solutionDir =%solutionDir:~0,-1%
  IF%projectDir:〜-1%== \ SET projectDir =%projectDir:~0,-1%
  IF%配置:〜-1%== \ SET配置=%配置:~0,-1%

     

REM这只是为了更容易调试   Echo Solution目录是:“%solutionDir%”
  回声项目目录是:“%projectDir%”
  Echo Configuration目录为:“%configuration%”
  回声当前目录是:“%CD%”
  Echo批处理文件在“%~dp0”

执行      

REM复制sym_align文件
  复制/ Y“%solutionDir%\ SymAlignGlue \ sym_align.dll”“%projectDir%”“   复制/ Y“%solutionDir%\ SymAlignGlue \ sym_align.ctf”“%projectDir%”

     

设置isPV =%configuration%==“PV Release”
  IF%isPV%copy / Y“%solutionDir%\ SymAlignGlue \ Release \ SymAlignGlue.dll”“%projectDir%”“   如果不是%isPV%copy / Y“%solutionDir%\ SymAlignGlue \%configuration%\ SymAlignGlue.dll”“%projectDir%”

     

REM结果......
  IF%ERRORLEVEL%EQU 0(
  REM成功
    Echo复制SymAlign文件。
    退出/ b 0
  )
  如果不是%ERRORLEVEL%EQU 0(
  REM错误
    Echo复制SymAlign文件时发现错误。错误级别为%ERRORLEVEL%
    退出/ b%ERRORLEVEL%
  )

其他一些信息:

  1. 我正在运行Jenkins作为服务,我以管理员身份进行服务登录。
  2. 有没有人知道这怎么可能发生?

1 个答案:

答案 0 :(得分:0)

最后,问题似乎是工作区文件夹重复 1已更新,另一个已构建,导致测试的工作区未获得最新更新 根据{{​​3}},这是由于詹金斯在多种配置下的行为方式。