在 CruiseControl.NET 上运行吞咽任务



有人有在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>

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

最新更新