2012-09-28 3 views
6

우리는 스칼라/자바 상점이며 우리는 빌드를 위해 Gradle을, CI를 위해 Hudson을 사용합니다. 우리는 최근 mocha에서 테스트와 함께 node.js 코드를 작성했습니다. 거기에 어쨌든 우리의 gradle 워크 플로우와 허드슨에 설치에 포함되어 있나요? gradle-javascript-plugin을 살펴 봤지만 npm 테스트 또는 npm을 실행하는 방법을 알지 못했고 gradle-build 또는 gradle-test 명령을 실행하고 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') 
} 

참조 : 지금 추가 할 수있는 NPM을 내 커피 스크립트를 컴파일 할 수있는 방법을 제공 http://gradle.1045684.n5.nabble.com/State-of-javascript-stuff-in-master-td5709818.html

가 끝내 간부 요청 발프이 간부에 cmd에 따라에 cmd를 설치 제공 및 결과 표준 출력/표준 에러

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는에 캐시됩니다 실행하는 것입니다 빌드 디렉토리). 따라서 nud를 hudson/jenkins/whatever-ci에 설치하고 해당 버전을 관리 할 필요가 없습니다.

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

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

, sourcesDir는 컨테이너 내부 실행해야 당신의 package.json, scriptBody의 명령으로 디렉토리 :

는 여기 모습 수있는 방법의 간단한 예입니다.

다음으로 실행하십시오. ./gradlew npmContainerizedTask