Nodejs插件的Groovy脚本无法在Jenkins

时间:2016-02-25 12:30:11

标签: node.js jenkins groovy jenkins-plugins chef-recipe

我觉得我遗漏了Nodejs插件的数据绑定构造函数,它说" List扩展了hudson.tools.ToolProperty属性"

import jenkins.model.*
import hudson.tools.*
import jenkins.plugins.nodejs.tools.*

def inst = Jenkins.getInstance()

def desc = inst.getDescriptor(jenkins.plugins.nodejs.NodeJSInstaller)

def sinst = new NodeJSInstallation("nodejs12", "/usr/local/bin/node/")

desc.setInstallations(sinst)

desc.save()

Error:

    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '1'
    ---- Begin output of "java" -jar "/var/chef/cache/jenkins-cli.jar" -s http:/
    /localhost:8080 groovy /tmp/groovy20160225-23006-1a7g9ix ----
    STDOUT:
    STDERR: ERROR: Unexpected exception occurred while performing groovy command
.
    groovy.lang.MissingPropertyException: No such property: Jenkins for class: RemoteClass 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
        at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
        at RemoteClass.run(RemoteClass:6)
        at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266)
        at groovy.lang.GroovyShell.run(GroovyShell.java:517)
        at hudson.cli.GroovyCommand.run(GroovyCommand.java:86)
        at hudson.cli.CLICommand.main(CLICommand.java:256)
        at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:92)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:608)
        at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:583)
        at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:542)
        at hudson.remoting.UserRequest.perform(UserRequest.java:120)
        at hudson.remoting.UserRequest.perform(UserRequest.java:48)
        at hudson.remoting.Request$2.run(Request.java:326)
        at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
        at hudson.cli.CliManagerImpl$1.call(CliManagerImpl.java:63)
        at hudson.remoting.CallableDecoratorAdapter.call(CallableDecoratorAdapter.java:18)
        at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
        at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
    ---- End output of "java" -jar "/var/chef/cache/jenkins-cli.jar" -s http://localhost:8080 groovy /tmp/groovy20160225-23006-1a7g9ix ----
    Ran "java" -jar "/var/chef/cache/jenkins-cli.jar" -s http://localhost:8080 groovy /tmp/groovy20160225-23006-1a7g9ix returned 1

    Cookbook Trace:
    ---------------
    /var/chef/cache/cookbooks/jenkins/libraries/_executor.rb:84:in `execute!'
    /var/chef/cache/cookbooks/jenkins/libraries/_executor.rb:137:in `groovy!'
    /var/chef/cache/cookbooks/jenkins/libraries/script.rb:48:in `block (2 levels) in <class:JenkinsScript>'
    /var/chef/cache/cookbooks/jenkins/libraries/script.rb:47:in `block in <class:JenkinsScript>'

    Resource Declaration:
    ---------------------
    # In /var/chef/cache/cookbooks/jenkins/recipes/nodeconfig.rb

      3: jenkins_script 'nodejs' do
      4:   command <<-EOH.gsub(/^ {4}/, '')
      5:
      6: import hudson.model.*
      7: import hudson.tools.*
      8: import jenkins.plugins.nodejs.tools.*
      9:
     10: def inst = Jenkins.getInstance()
     11:
     12: def desc = inst.getDescriptor(jenkins.plugins.nodejs.NodeJSInstaller)
     13:
     14: def sinst = new NodeJSInstallation("nodejs12", "/usr/local/bin/node")
     15:
     16: desc.setInstallations(sinst)
     17:
     18: desc.save()
     19:
     20: EOH
     21: end

我无法理解错误,因为我对Java知之甚少,而且我是Jenkins的新手。

1 个答案:

答案 0 :(得分:1)

jenkins上的nodejs插件的Groovy脚本

导入hudson.model。*

导入hudson.tools。*

导入jenkins.plugins.nodejs.tools。*

导入jenkins.model。*

def inst = Jenkins.getInstance()

def desc = inst.getDescriptor(jenkins.plugins.nodejs.tools.NodeJSInstallation)

def installer = new NodeJSInstaller(“NodeJS version”,“some npm package”,npm package refresh hours(integer))

def prop = new InstallSourceProperty([installer])

def sinst = new NodeJSInstallation(“安装名称(字符串标签)”,“/ path / to / nodejs / executable”,[prop])

desc.setInstallations(sinst)

desc.save()