0

问题

我有一个从预构建事件中调用的批处理文件。当Jenkins正在构建解决方案时,它会失败。在命令行中从MSBuildVisual Studio
构建解决方案时,它工作正常。 我的问题是,什么会导致这种行为?

细节

在我的解决方案(.Net 4.5 和 C++ 项目)中,我有一个从项目的 Pre-Build 事件之一调用的批处理文件。
它工作正常,除非我试图通过 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 的内容是:

回声偏移
设置解决方案目录=%1
设置项目目录=%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 %configuration:~-1%==\ SET configuration=%configuration:~0,-1%

REM 这只是为了方便调试
Echo 解决方案目录是:"%solutionDir%"
Echo 项目目录是:"%projectDir%"
Echo 配置目录是:"%configuration%"
Echo 当前目录是:"%CD%"
Echo 批处理文件在“%~dp0”处执行

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

set isPV=%configuration%=="PV Release"
IF %isPV% copy /Y "%solutionDir%\SymAlignGlue\Release\SymAlignGlue.dll" "%projectDir%"
IF NOT %isPV% copy /Y "%solutionDir%\ SymAlignGlue\%configuration%\SymAlignGlue.dll" "%projectDir%"

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

一些附加信息:

  1. 我将 Jenkins 作为服务运行,并且以管理员身份登录服务。

有没有人有想法怎么会发生这种情况?

4

1 回答 1

0

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

于 2013-07-09T05:29:24.960 回答