2016-06-08 21 views
0

Hat jemand Erfahrung im CrupControl Lauf? Wir haben einige Probleme, den Prozess durch XML Konfigurationsdatei zu automatisieren. Aufgaben können durch Commandprompt gestartet werden manuell auf die lokalen und virtuellen Maschinen, aber wenn man von CruiseControl- gestartet gibt es einen Fehler:Running Schluck Aufgaben auf CruiseControl.NET

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. 

Jede Hilfe sehr geschätzt wird.

UPDATE Nach dem Versuch, herauszufinden, was Simon Laing vorgeschlagen hat, begann eine weitere Fehler zu erhalten:

<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> 

Die PATH gesetzt wurde:% APPDATA% \ npm wurde schluck durch

installiert
npm install gulp -g 

und

npm install gulp --save-dev 

Es scheint mir config startet Node, der an einem falschen Ort nach Schluck sucht.

Antwort

3

Gulp wird normalerweise von der Befehlszeile aus über den Befehl gulp-cli ausgeführt, was die Ausführung von node mit dem Argument gulp überflüssig macht.

Um Ihr Problem zu lösen, müssen Sie Cruise Control sagen, welche ausführbare Datei (node.exe) mit welchem ​​Tool und seinen Argumenten ausgeführt wird.

In Ihrem Fall sollte es sein:

  • Dateiname: Path\to\node.exe
  • Argumente: gulp <any-other-switches>

Alternative Lösung, erhalten cmd Knoten für Sie ausführen:

  • Dateiname: c:\windows\system32\cmd.exe
  • Argumente: /c gulp <any-other-switches>

cmd kann dann lesen Sie den Pfad und führen Note als gulp-cli würde steuern, wenn Sie es manuell aufrufen wurden.

+0

Danke für die Antwort. Jetzt wird ein weiterer Fehler angezeigt: ' Fehler: Modul 'D: \ path \ to \ gulp' kann nicht gefunden werden bei Function.Module._resolveFilename (module.js : 325: 15) bei Function.Module._load (module.js: 276: 25) bei Function.Module.runMain (module.js : 441: 10) beim Start (node.js: 139: 18) Irgendwelche Ideen zu diesem? –

+0

Es ist ziemlich offensichtlich, dass der Tempomat den Weg zur Schluckakte nicht sieht. Ich kann immer noch nicht herausfinden, wie es geändert werden kann. –

+0

Wurde der Schluck global oder pro Benutzer installiert? –

0

Verspätete Antwort, ich weiß aber, auch nachdem ich versucht habe, den Ansatz in der angenommenen Antwort oben, habe ich das gleiche Problem weiter.

In meinem Fall habe ich "au build" verwendet, um eine Aurelia-App zu erstellen, die Knoten finden und ausführen muss. Egal, wie sehr ich es versuchte, ich konnte CCNet NICHT dazu bringen, den Pfad zu sehen, also fügte ich der Task einen "Environment" -Block hinzu und kopierte mein Systempfadverzeichnis darin.

Sobald ich das getan habe, war alles wieder glücklich.

Als Referenz, dies ist, was die Exec-Task in meiner CCNet.config-Datei jetzt aussieht.

<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\14.0\Bin;C:\Program Files\nodejs\</value> 
      </variable> 
     </environment> 
     </exec> 

    <msbuild> 
     ... 
    </msbuild> 

    </tasks> 

</project> 

</cruisecontrol> 

Wie Sie den Pfad sehen, setzt die Umgebung, so dass alle meine Werkzeuge gefunden werden kann, während die Tag-Basisverzeichnis mit effektiv das Arbeitsverzeichnis, in dem die Projektdateien sind auf.