使用Groovy命令将Jenkin的工作与另一个Jenkin的工作禁用的问题

时间:2018-08-16 22:21:54

标签: jenkins jenkins-groovy

Screen shot of jenkin's configuration

由于某种原因,添加的禁用另一个詹金的工作的命令不起作用。

我在做什么错了?

3 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但是如果有人找到了,这里就是一个答案。您应该使用系统Groovy脚本部分,而不是一无所获。

答案 1 :(得分:0)

要详细说明@Risha的答案,请参阅groovy plugin上的注释。

Groovy脚本与系统Groovy脚本

普通的“ Groovy脚本”在运行构建的从属服务器上的派生JVM中运行。基本上与运行“ groovy”命令并传递脚本相同。

另一方面,系统Groovy脚本在Jenkins主服务器的JVM中运行。因此,它将可以访问Jenkins的所有内部对象,因此您可以使用它来更改Jenkins的状态。它类似于[Jenkins脚本控制台](https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Consoleb功能。

安全性

系统groovy作业可以访问整个Jenkins,因此,只有具有管理员权限的用户才能添加系统Groovy生成步骤并配置系统Groovy脚本。

===========

您的常规(独立)Groovy步骤将在使用所选帐户的节点上运行,并且将无法访问Jenkins数据,而System Groovy将在具有完全访问权限的主数据库上运行(如所述)。

使用@Rohit的命令来打印状态会有所帮助。 Jenkins.instance.getItemByFullName('folder_name / job_name')。isDisabled()}“

最好是先进行测试,然后再进行禁用,然后检查结果是否成功。 PS:您是否还想测试/杀死正在运行的其他作业的正在运行的实例(job.isBuilding())?

答案 2 :(得分:0)

对我来说,上面给出的解决方案不起作用,但我在System Groovy脚本

中尝试过

按照以下方式运行,效果很好:)

import jenkins.*
import jenkins.model.*
Jenkins.instance.getItemByFullName('folder/Sub_Folder/jobName').setDisabled(false)