通过jenkins,使用默认目标调用ant文件build.xml。 ant任务调用批处理文件,该文件启动一个新窗口,并在执行后执行我的ant单元测试。
<exec dir="${baseLoc}/Temp/${ant.project.name}/@{testdata}" executable="cmd" vmlauncher="false">
<env key="WAHL" value="@{option}"/>
<arg line="/c "/>
<arg value="start /wait __Make.bat"/>
</exec>
问题是jenkins无法启动批处理脚本。有什么理由吗? 注意:通过ANT执行相同的操作。
答案 0 :(得分:0)
我记得我自己在几年前运行批处理文件时遇到类似的问题,正确获取返回代码,等等。这是我在蚂蚁(和Jenkins / Hudson经营的蚂蚁)中成功使用了5年的执行官:
<property name="my.batch.file" value="${path.to.my.file}/myBatch.bat"/>
<exec dir="${dir.property.you.want}" executable="cmd" failonerror="true">
<!-- any env lines can go here -->
<arg line="/c call ${my.batch.file}"/> <!-- must be the first arg tag -->
<arg line="arg1"/> <!-- batch file arguments start here if needed-->
<arg line="arg2"/>
</exec>
我建议使用ant属性存储批处理文件的完整路径,和/或确保dir条目与批处理文件的位置匹配。这可能就是为什么它没有在Jenkins中运行,因为它的工作目录最终会变得不同。
在你的情况下,你提到它会弹出一个新窗口(因为你正在使用start),所以你可能需要稍微调整它以获得这种行为。
答案 1 :(得分:0)
出于某种原因,我在exec任务中包含了 vmlauncher =“false”标记。删除它解决了这个问题。
现在我能够看到执行中每个批处理脚本的新命令shell。
感谢您的提示和建议。