有人有在CruiseControl上运行gop的经验吗?我们通过xml配置文件自动化该过程时遇到了一些麻烦。任务可以通过命令提示符在本地和虚拟机上手动启动,但是从CruiseControl启动时会出现错误:
ThoughtWorks.CruiseControl.Core.Tasks.BuilderException: Unable to execute: gulp TaskName
System.IO.IOException: Unable to execute file [D:CC.NETVSS%CorrectPathName%gulp]. The file may not exist or may not be executable.
任何帮助都非常感谢。
更新在尝试了Simon Laing的建议之后,开始得到另一个错误:
<buildresults>
<message level="Error">module.js:327</message>
<message level="Error"> throw err;</message>
<message level="Error"> ^</message>
<message level="Error">Error: Cannot find module 'D:CC.NETVSSPathtotheprojectgulp'</message>
<message level="Error"> at Function.Module._resolveFilename (module.js:325:15)</message>
<message level="Error"> at Function.Module._load (module.js:276:25) </message>
<message level="Error"> at Function.Module.runMain (module.js:441:10) </message>
<message level="Error"> at startup (node.js:139:18)</message>
<message level="Error"> at node.js:968:3</message>
</buildresults>
</build>
</cruisecontrol>
路径设置为: %APPDATA%pm,gulp 已通过 安装
npm install gulp -g
和
npm install gulp --save-dev
在我看来,config 启动在错误位置搜索 gulp 的节点。
Gulp 通过 gulp-cli 从命令行正常执行,无需使用 gulp
参数执行node
。
要解决您的问题,您需要告诉巡航控制使用哪个工具运行哪个可执行文件(node.exe)及其参数。
在您的情况下,它应该是:
- 文件名:
Pathtonode.exe
- 参数:
gulp <any-other-switches>
替代解决方案,让cmd为您执行节点:
- 文件名:
c:windowssystem32cmd.exe
- 参数:
/c gulp <any-other-switches>
然后,cmd
可以读取路径并执行注释,就像gulp-cli
手动调用它一样控制。
我知道答案迟到了,但是,即使在尝试了上面接受的答案中的方法之后,我仍然遇到同样的问题。
就我而言,我使用"au build"来构建一个 aurelia 应用程序,该应用程序需要查找并运行节点。 无论我怎么努力,我都无法让 CCNet 看到路径,所以我在任务中添加了一个"环境"块,并将我的系统路径目录复制到其中。
一旦我这样做了,一切都又变得快乐了。
作为参考,这是我的 CCNet.config 文件中的执行任务现在的样子。
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<project name="blahproject">
<sourcecontrol type="git">
...
</sourcecontrol>
<triggers>
...
</triggers>
<tasks>
<exec>
<executable>C:windowssystem32cmd.exe</executable>
<baseDirectory>C:myprojectworkingfolder</baseDirectory>
<buildArgs>/c au build</buildArgs>
<buildTimeoutSeconds>60</buildTimeoutSeconds>
<successExitCodes>0</successExitCodes>
<environment>
<variable>
<name>path</name>
<value>C:UsersAdministratorAppDataRoamingnpm;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;C:Program FilesGitcmd;C:Program FilesGitmingw64bin;C:Program FilesGitusrbin;C:Program Files (x86)MSBuild14.0Bin;C:Program Filesnodejs</value>
</variable>
</environment>
</exec>
<msbuild>
...
</msbuild>
</tasks>
</project>
</cruisecontrol>
如您所见,环境设置路径以便可以找到我的所有工具,同时使用基目录标记有效地设置项目文件所在的工作目录。