2012-09-28 40 views
6

我們是一個Scala/Java商店,我們使用Gradle構建我們的構建,使用Hudson構建CI。我們最近用mocha中的測試編寫了一些node.js代碼。無論如何要將它納入我們的Gradle工作流程並在Hudson中進行設置?我查看了gradle-javascript-plugin,但我不知道如何通過它運行npm test或npm install,也不知道如何通過gradle-build或gradle-test命令來運行npm test或npm install,也讓Hudson撿起它。如何將NodeJS測試包含到Gradle和Hudson中?

回答

3

我可以讓你成爲那裏的一部分,我也在這個任務的中間。確保你至少有Gradle 1.2。

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') 
} 

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

一個辦法來編譯我的CoffeeScript我現在可以添加故宮提供的安裝cmd進入取決於EXEC CMD一個Groovy EXEC請求和BARF結果提供標準輸出/標準錯誤

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 

結果:

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!') 
    } 
} 

作爲就像摩卡測試一樣,我沒有這方面的第一手知識,但是我懷疑你可以用類似的方法處理。

0

如果你喜歡泊塢窗,你可能會喜歡這個gradle這個插件: https://github.com/dimafeng/containerized-tasks

主要思想是跑碼頭工人,容器將構建後立即被扔掉裏面的NPM任務(但node_modules將被緩存你的編譯目錄)。所以你不需要在你的hudson/jenkins/whatever-ci上安裝npm並管理它的版本。

下面是它如何可能看起來像一個簡單的例子:

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

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

其中,sourcesDir是與應在容器內執行你的package.jsonscriptBody命令的目錄。

然後只是運行./gradlew npmContainerizedTask

相關問題