6

私たちはScala/Javaショップであり、ビルドにはGradleを使用し、CIにはHudsonを使用しています。最近、mochaでテストを行ったnode.jsコードをいくつか作成しました。それをハドソンのgradleワークフローとセットアップに含める方法はありますか?gradle-javascript-pluginを調べましたが、 npmtestまたはnpminstallを実行する方法がわかりませんでした。また、gradle-buildまたはgradle-testコマンドを実行して、Hudsonに取得させる方法もわかりませんでした。

4

2 に答える 2

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

コーヒースクリプトをコンパイルする方法が提供されたので、stdout/stderr を提供する exec cmd の結果に応じて、npm install コマンドを 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!')
  }
}

モカテストに関する限り、私はこれについて直接の知識はありませんが、同様に処理できると思います.

于 2012-11-29T21:40:28.210 に答える
0

docker が好きなら、この gradle プラグインが好きかもしれません: https://github.com/dimafeng/containerized-tasks

主なアイデアは、ビルドの直後に破棄される docker コンテナー内で 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

于 2016-10-06T02:26:11.333 に答える