2017-04-07 41 views

回答

1

如果你有机会到脚本控制台,您可以运行这样的事情:

final jenkins = Jenkins.instance 

jenkins.computers.inject(0) { acc, item -> 
    acc + item.numExecutors 
} 

如果您在沙盒管道运行这一点,你必须有管理员列入白名单的方法在进程内脚本批准(或通过使用白名单的插件)在http://jenkinsUrl/scriptApproval/。您将无法使用inject,因为现在的JENKINS-26481,但您的管道脚本可能看起来像:

final jenkins = Jenkins.instance 

int executorCount = 0 
for (def computer in jenkins.computers) { 
    executorCount += computer.numExecutors 
} 

// Rest of pipeline 

如果您在管道沙盒不运行,你可以访问这些对象没有白名单。

+0

'进口jenkins.model.Jenkins 节点{ 最终詹金斯= Jenkins.instance jenkins.computers.inject(0){ACC,项 - > ACC + item.getNumExecutors() } DEF输出= SH脚本:“java -jar /home/user1/earms/hazelcast/TestbedThreads.jar”,returnStdout:true}' 当我尝试运行上面的代码与管道..我收到以下异常:'org.jenkinsci。 plugins.scriptsecurity.sandbox.RejectedAccessException: 脚本不得使用方法jenkins.model.Jenkins getComputers' – User12345

+0

,我试图批准以下:Jenkins-> ManageJenkins->进程脚本批准─>批准jenkins.model.jenkins。但不是工作king..could你请帮我解决这个问题.. – User12345

+0

@ User12345你运行使用脚本控制台(http:// jenkinsUrl /脚本),或通过管道脚本?如果您正在运行沙盒脚本,则需要获得许可才能执行此操作。 – mkobit