Bir Scala/Java mağazasıyız ve yapımız için Gradle ve Hudson for CI kullanıyoruz. Yakın zamanda mocha'da testlerle bazı node.js kodları yazdık. Tabiat iş akışımıza ve Hudson’daki kurulumuna dahil olmak için zaten var mı? gradle-javascript-plugin'a baktım ama npm testini veya npm'yi nasıl çalıştıracağımı anlayamadım ve bu sayede grad-build veya gradle-test komutları ile nasıl çalışacağını ve Hudson'ın onu almasına izin vermeyeceğim.NodeJS testlerini Gradle ve Hudson'a nasıl ekleyebilirim?
cevap
Size yolun bir parçasını verebilirim, bu görevde de orta akışım var. En azından Gradle 1.2'ye sahip olduğunuzdan emin olun.
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')
}
Referans: Ben şimdi ekleyebilir UÖM'sini benim CoffeeScript derlemek için bir yol Sağlanan http://gradle.1045684.n5.nabble.com/State-of-javascript-stuff-in-master-td5709818.html
gelenekselleşmiş bir exec istek ve kusmuğu exec cmd bağlı içine cmd yüklemek sağlayan sonuç 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
Sonuçlar içinde:
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!')
}
}
olarak mocha testleri kadar, bu konuda ilk elden bilgiye sahip değilim, ancak benzer şekilde ele alacağınızdan şüpheleniyorum.
Bunu gradle eklentisi hoşunuza gidebilir liman işçisi isterseniz: https://github.com/dimafeng/containerized-tasks
ana fikri doğru inşa sonrası atılmasına benzer bir liman işçisi kabın içine senin npm görevleri (ama node_modules önbelleğe edilecektir çalıştırmaktır yapı dizini). Dolayısıyla, htson/jenkins/whatever-ci'nize npm yüklemeniz ve sürümlerini yönetmeniz gerekmez.
plugins {
id "com.dimafeng.containerizedTask" version "0.4.0"
}
npmContainerizedTask {
sourcesDir = 'test-env/gulp'
outputLevel = 'INFO' // ALL, DEBUG
scriptBody = 'npm install\ngulp'
}
, sourcesDir
kabın içine idam edilmelidir sizin package.json
, scriptBody
komutlarla bir dizindir:
Burada gibi görünebilir nasıl basit bir örnek.
Daha sonra sadece ./gradlew npmContainerizedTask