2012-09-28 4 views
6

Wir sind ein Scala/Java-Shop und wir verwenden Gradle für unser Build und Hudson für CI. Wir haben kürzlich einen node.js-Code mit Tests in Mocha geschrieben. Gibt es überhaupt etwas, das wir in unseren Horizon-Workflow integrieren? Ich schaute auf die gradle-javascript-plugin, aber ich konnte nicht herausfinden, wie man npm Test oder npm installieren durch sie und nicht sicher, wie es durch grdle-build oder grddle-Test-Befehle laufen lassen und lassen Sie es auch Hudson abholen.Wie können NodeJS-Tests in Gradle und Hudson integriert werden?

Antwort

3

Ich kann Ihnen einen Teil des Weges dorthin bringen, ich bin auch mitten in dieser Aufgabe. Stellen Sie sicher, dass Sie mindestens Gradle 1.2 haben.

import org.gradle.plugins.javascript.coffeescript.CoffeeScriptCompile 


apply plugin: 'coffeescript-base' 

repositories { 
    mavenCentral() 
    maven { 
    url 'http://repo.gradle.org/gradle/javascript-public' 
    } 
} 

task compileCoffee(type: CoffeeScriptCompile){ 
    source fileTree('src') 
    destinationDir file('lib') 
} 

Referenz: http://gradle.1045684.n5.nabble.com/State-of-javascript-stuff-in-master-td5709818.html

mit einer Art und Weise bereitgestellt mein Coffee kompilieren kann ich jetzt fügen Sie die npm cmd installieren in eine groovige exec Anfrage und BARF in Abhängigkeit von den exec cmd Ergebnis liefert stdout/stderr

npm install 
echo $? 
0 
npm install 
npm ERR! install Couldn't read dependencies 
npm ERR! Failed to parse json 
npm ERR! Unexpected token } 
npm ERR! File: /<>/package.json 
npm ERR! Failed to parse package.json data. 
npm ERR! package.json must be actual JSON, not just JavaScript. 
npm ERR! 
npm ERR! This is not a bug in npm. 
npm ERR! Tell the package author to fix their package.json file. JSON.parse 

npm ERR! System Darwin 11.4.2 
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" 
npm ERR! cwd /<>/ 
npm ERR! node -v v0.8.14 
npm ERR! npm -v 1.1.65 
npm ERR! file /<>/package.json 
npm ERR! code EJSONPARSE 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /<>/npm-debug.log 
npm ERR! not ok code 0 
echo $? 
1 

Ergebnisse in:

task npmDependencies { 
    def proc = 'npm install'.execute() 
    proc.in.eachLine { line -> println line} 
    proc.err.eachLine { line -> println 'ERROR: '+line } 
    proc.waitFor() 
    if (proc.exitValue()!=0){ 
    throw new RuntimeException('NPM dependency installation failed!') 
    } 
} 

Wie Was die Mocha-Tests angeht, habe ich keine Ahnung davon, aber ich vermute, dass Sie ähnlich damit umgehen können.

0

Wenn Sie Andockfenster könnten Sie diese gradle Plugin mögen: https://github.com/dimafeng/containerized-tasks

Die Hauptidee ist Ihre npm Aufgaben in einem Docker Behälter laufen, die weggeworfen werden direkt nach dem Build (aber node_modules zwischengespeichert wird in Ihr Build-Verzeichnis). Sie müssen also npm nicht auf Ihrem hudson/jenkins/whatever-ci installieren und Versionen davon verwalten.

Hier ist ein einfaches Beispiel, wie es aussehen könnte:

plugins { 
    id "com.dimafeng.containerizedTask" version "0.4.0" 
} 

npmContainerizedTask { 
    sourcesDir = 'test-env/gulp' 
    outputLevel = 'INFO' // ALL, DEBUG 
    scriptBody = 'npm install\ngulp' 
} 

Wo, sourcesDir ist ein Verzeichnis mit Ihren package.json, scriptBody den Befehlen, die im Innern des Behälters ausgeführt werden sollen.

Dann führen Sie einfach ./gradlew npmContainerizedTask

Verwandte Themen