我有一个我希望成为一个简单问题的东西。然而,这让我整天难过。
我在Windows中使用cruisecontrol,通过Cygwin建立。我在linux平台上有一些CC经验,我正在做的很多非常相似。但是,我尝试在config.xml文件的Schedule部分中执行的大多数命令都会出错。
以下是例外:
ExecBuilder - Could not execute command: /cygdrive/d/Program\ Files/Subversion/bin/svn
net.sourceforge.cruisecontrol.CruiseControlException: Encountered an IO exception while attempting to execute 'net.sourceforge.cruisecontrol.builders.ExecScript@b80f1c'. CruiseControl cannot continue.
at net.sourceforge.cruisecontrol.builders.ScriptRunner.runScript(ScriptRunner.java:133)
以下是我尝试运行的一些命令示例,这些命令会产生此类错误。
<exec command="${CCLoc}/projects/${project.name}/IOSdllScript"/>
- 运行我在cruisecontrol.bat之外测试的脚本并运行。包括#!/ bin / sh作为第一行
<exec command="${CCLoc}/projects/${project.name}/EmptyFile"/>
- 实际上是一个空文本文件,证明问题与我的脚本无关。
<exec command="/cygdrive/d/Program\ Files/Subversion/bin/svn" args="cleanup" workingdir="${svndir}"/>
-Trys svn清理目录。我仔细检查了路径和拼写。
我测试的一个命令工作但没有给出这个错误。那个命令很触动。
<exec command="touch" args="ABC.txt"/>
我不确定为什么只有触摸似乎工作而没有别的。
答案 0 :(得分:0)
回复:GrzegorzOledzki的评论:
正确,但你给了我一个想法,最终帮助了这个,虽然它远非理想的解决方案。
我注意到所有失败的命令都使用了路径,而有效的命令却没有。考虑到这一点,我还尝试了一些其他的东西。
有效的方法:
<exec command="touch" workingdir="projects" args="ABC.txt"/>
<exec command="svn" args="cleanup" workingdir="${svndir}/Iosdll"/>
这些路径必须是相对的而不是绝对的fyi :(
仍然无效的事情:
显然,这个ExecScript IO异常是某种泛型无法运行命令错误。用command =“path / script”或command =“script”workingdir =“path”搞乱没有结果。所以我刚进入/ etc / profile(cygwin的bash_profile等价物)并将我的脚本路径添加到PATH。现在这种作品。尝试使用此脚本运行我的脚本 格式(相同的错误)
尝试运行没有的脚本 存在(同样的错误!!!)
执行多个exec命令... 像一个自上而下的程序(只运行 第一)
<exec command="IOSdllScript.bat"/>
编辑:在通过Cygwin时,似乎作为批处理文件比脚本更好。
我仍然想知道如何以“正确”的方式做到这一点,IE而不必更改cygwin的PATH变量。