运行 gulp 个任务 CruiseControl.NET

Running gulp tasks on CruiseControl.NET

有人在 CruiseControl 上使用过 运行 gulp 吗? 我们在通过 xml 配置文件自动执行该过程时遇到了一些麻烦。可以在本地和虚拟机上通过 CommandPrompt 手动启动任务,但是从 CruiseControl 启动时会出现错误:

ThoughtWorks.CruiseControl.Core.Tasks.BuilderException: Unable to execute: gulp TaskName

System.IO.IOException: Unable to execute file [D:\CC.NET\VSS\%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.NET\VSS\Path\to\the\project\gulp'</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>

PATH 设置为:%APPDATA%\npm,gulp 是通过

安装的
npm install gulp -g 

npm install gulp --save-dev

在我看来,配置启动的节点在错误的位置搜索 gulp。

Gulp 通过 gulp-cli 从命令行正常执行,这消除了使用 gulp 参数执行 node 的需要。

要解决您的问题,您需要告诉巡航控制哪个可执行文件 (node.exe) 到 运行 使用哪个工具及其参数。

在你的情况下应该是:

  • 文件名:Path\to\node.exe
  • 参数:gulp <any-other-switches>

备选方案,让cmd为你执行node:

  • 文件名:c:\windows\system32\cmd.exe
  • 参数:/c gulp <any-other-switches>

cmd 然后可以读取 路径 并执行注释,因为 gulp-cli 将控制您是否手动调用它。

迟到的答案,我知道,但是,即使尝试了上面接受的答案中的方法,我仍然遇到同样的问题。

在我的例子中,我使用 "au build" 构建了一个 aurelia 应用程序,它需要找到 运行 节点。不管我怎么努力,我就是无法让 CCNet 看到路径,所以我在任务中添加了一个 "Environment" 块,并将我的系统路径目录复制到其中。

一旦我这样做了,一切又变得愉快了。

作为参考,这是我的 CCNet.config 文件中的 exec 任务现在的样子。

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">

<project name="blahproject">


    <sourcecontrol type="git">
    ...
    </sourcecontrol>

    <triggers>
    ...
    </triggers>

    <tasks>

        <exec>
            <executable>C:\windows\system32\cmd.exe</executable>
            <baseDirectory>C:\myproject\working\folder</baseDirectory>
            <buildArgs>/c au build</buildArgs>
            <buildTimeoutSeconds>60</buildTimeoutSeconds>
            <successExitCodes>0</successExitCodes>
          <environment>
            <variable>
                <name>path</name>
                <value>C:\Users\Administrator\AppData\Roaming\npm;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\MSBuild.0\Bin;C:\Program Files\nodejs\</value>
            </variable>
        </environment>
        </exec>

    <msbuild>
      ...
    </msbuild>

  </tasks>

</project>

</cruisecontrol>

如您所见,环境设置路径以便可以找到我的所有工具,同时使用基本目录标记有效地设置项目文件所在的工作目录。