Jenkins在完成之前删除批处理文件

时间:2014-10-07 16:05:34

标签: jenkins

我在Server 2012虚拟机上运行Jenkins,并且我注意到我的某些项目在成功时被标记为不完整。我收到错误'无法找到批处理文件。'根据我的判断,问题是Jenkins正在创建运行我的项目的批处理文件正在被删除,然后才能完成。我是从Windows 7机箱迁移出来的,这个问题并没有发生。

我已经能够在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

2 个答案:

答案 0 :(得分:3)

我有一个非常类似的问题。我在詹金斯开了一份工作,正在调用一个专门的内部程序并导致找不到批处理文件"错误。事实证明,正在运行的一个批处理文件中有一个del %TEMP%\*.* /q命令。这是在作业中间删除所有Jenkins临时批处理文件并导致错误。

简单的解决方案是简单地重新定位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选项(出于隐私原因删除了我的用户名。)这解决了问题。不要忘记用您系统的有效路径名替换我的路径。

命令行选项应添加到主启动脚本和从启动脚本中,以便正常运行。

答案 1 :(得分:0)

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

配置执行Windows批处理命令构建步骤时,会创建一个Jenkins随后执行的临时批处理文件。

临时批处理文件的执行从:
开始 [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.该行之前发生。因此,它不是无法找到的Jenkins临时批处理文件,而是其他内容。

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