我有一个正在从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
设置配置=%3REM删除引号
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%
)
其他一些信息:
有没有人知道这怎么可能发生?
答案 0 :(得分:0)
最后,问题似乎是工作区文件夹重复 1已更新,另一个已构建,导致测试的工作区未获得最新更新 根据{{3}},这是由于詹金斯在多种配置下的行为方式。