0

我有我希望是一个简单的问题。然而,它让我一整天都难过。

我正在使用 Windows 中的巡航控制,通过 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}"/>

-尝试对目录进行 svn 清理。我仔细检查了路径和拼写。

我测试的一个命令有效并且没有给出这个错误。那个命令是触摸的。

<exec command="touch" args="ABC.txt"/>

我不知道为什么只有触摸似乎有效,而其他什么都没有。

4

1 回答 1

0

回复:GrzegorzOledzki 的评论:

正确,但是您给了我一个想法,尽管它远非理想的解决方案,但最终对此有所帮助。

我注意到所有失败的命令都使用路径,而有效的命令没有。考虑到这一点,我尝试了更多的东西。

有效的东西:

<exec command="touch" workingdir="projects" args="ABC.txt"/>
<exec command="svn" args="cleanup" workingdir="${svndir}/Iosdll"/>

这些路径必须是相对的而不是绝对的 fyi :(

仍然不起作用的事情:

尝试使用这种格式运行我的脚本(同样的错误)

试图运行一个不存在的脚本(同样的错误!!!)

执行多个 exec 命令...就像一个自上而下的程序(仅先运行)

显然,这个 ExecScript IO 异常是某种通用的无法运行命令错误。乱用 command="path/script" 或 command="script" workingdir="path" 没有产生任何结果。所以我只是进入 /etc/profile(cygwin 的 bash_profile 等效项)并将脚本的路径添加到 PATH。现在这种作品。

<exec command="IOSdllScript.bat"/>

编辑:通过 Cygwin 时,作为批处理文件似乎比脚本工作得更好。

我仍然想知道如何以“正确”的方式执行此操作,即 IE 无需更改 cygwin 的 PATH 变量。

于 2009-07-16T14:14:12.137 回答