2014-10-07 107 views
1

我在Server 2012 VM上运行Jenkins,并且我注意到一些项目在成功时被标记为不完整。我收到错误'无法找到批处理文件'。从我所知道的问题来看,Jenkins创建的批处理文件运行我的项目在完成之前被删除。我正在从没有发生此问题的Windows 7框迁移。Jenkins在完成之前删除批处理文件

我已经能够看到批处理文件是在C:\Users\164016\AppData\Local\Temp\中创建的,然后在批处理文件完成之前将其删除。我甚至可以在删除之前打开批处理文件。

我试着将命令放在命令的开头,但是这并不能解决问题。

LaunchPad.exe命令是一个自定义脚本,用于从Excel vba宏返回退出代码。

如果您有任何建议,请让我知道。

这里是日志:

Building remotely on (164016) Remote Computer in workspace C:\TEMP\Jenkins Slave\workspace\Weekly Claim Edit WQ Age 
[Weekly Claim Edit WQ Age] $ cmd /c call C:\Users\164016\AppData\Local\Temp\hudson3188220465265190989.bat 

C:\TEMP\Jenkins Slave\workspace\Weekly Claim Edit WQ Age>"O:\Analytics Team\Tasks\Automation Components\Ryan\C#\Launch Pad\LaunchPad\LaunchPad\bin\Debug\LaunchPad.exe" "C:\Program Files (x86)\Quest Software\Toad for Data Analysts 2.7\Toad.exe" -batch=true "O:\Analytics Team\Tasks\Automation Components\Cindy\TAS\Claim_Edit_WQ_Age.tas" "O:\Analytics Team\Tasks\Claim Edit WQ Age\Claim_Edit_WQ_Age.xlsm" 

LaunchPad Start Time: 10.7.2014 9:49:10 AM 
Time before Stopping Programs: 60 min 

Program: "C:\Program Files (x86)\Quest Software\Toad for Data Analysts 2.7\Toad.exe" 
Arguments: "-batch=true" "O:\Analytics Team\Tasks\Automation Components\Cindy\TAS\Claim_Edit_WQ_Age.tas" 
vba File: "O:\Analytics Team\Tasks\Claim Edit WQ Age\Claim_Edit_WQ_Age.xlsm" 
vba Exit File: O:\Analytics Team\Tasks\Claim Edit WQ Age\Claim_Edit_WQ_Age.txt 


Report Completed: 10/7/2014 9:50:28 AM 164016 O:\Reports\EPIC\Epic Claim Edit WQ\20141007 Claim Edit WQ Age.xlsx 

Exiting LaunchPad: No Errors Detected: 0 
The batch file cannot be found. 
Build step 'Execute Windows batch command' marked build as failure 
Finished: FAILURE 

回答

0

你得在这里玩别的东西......

当您配置执行Windows批处理命令构建步骤,它会创建一个临时的批处理文件詹金斯然后执行。

临时批处理文件的执行开始于:
[Weekly Claim Edit WQ Age] $ cmd /c call C:\Users\164016\AppData\Local\Temp\hudson3188220465265190989.bat
并完成在:
Build step 'Execute Windows batch command' marked build as failure

临时批处理文件hudson3188220465265190989.bat将最后一行后删除

您的错误The batch file cannot be found.发生了之前那一行。所以,这不是詹金斯临时批处理文件,无法找到,但其他的东西。

除非您提供您的执行Windows批处理命令的内容,否则很难猜测还有什么问题。

+0

执行Windows批处理命令:“LaunchPad.exe”“C:\ Program Files(x86)\ Quest Software \ Toad for Data Analysts 2.7 \ Toad.exe”-batch = true“O:\ Analytics Team \ Tasks \ Automation Components \ TAS \ Claim_Edit_WQ_Age.tas“”O:\ Analytics Team \ Tasks \ Claim Edit WQ Age \ Claim_Edit_WQ_Age.xlsm“ – 2014-10-07 18:03:18

+0

从调试LaunchPad - 删除批处理文件似乎发生在该行执行后:process = Process.Start (processInfo); – 2014-10-07 18:05:32

+0

奇怪的是临时批处理文件似乎在最后一行完成之前被删除。 – 2014-10-07 18:09:47

2

我有一个非常类似的问题。我在詹金斯执行一项工作,调用一个专门的内部程序并导致“找不到批处理文件”错误。原来在正在运行的其中一个批处理文件中有一个del %TEMP%\*.* /q命令。这是在作业中删除所有Jenkins临时批处理文件并导致错误。

简单的解决方案是简单地重新定位詹金斯临时文件夹。这可以通过向Jenkins启动脚本添加命令行选项来完成。我的启动脚本如下所示:java -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -Djava.io.tmpdir=C:\Users\!!My_user_name!!\Desktop\Jenkins_Temp -jar jenkins.war

我添加的重要部分是-Djava.io.tmpdir=C:\Users\!!My_user_name!!\Desktop\Jenkins_Temp选项(由于隐私原因,删除了我的用户名。)解决了此问题。不要忘记用您的系统的有效路径名替换我的路径。

应该将命令行选项添加到主启动脚本和从属启动脚本中才能正常运行。