groovy 如何打印Jenkin作业详细信息

cnwbcb6i  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(107)

是否有方法列出每个Jenkins作业的详细信息,例如执行shell命令?有一个shell脚本正在从两个作业执行,我知道其中一个作业正在运行它。需要找到正在执行此脚本的第二个Jenkins作业。
找到了这个链接,它列出了Jenkins中的所有作业,这只列出了作业,但没有打印作业的任何其他详细信息。https://support.cloudbees.com/hc/en-us/articles/226941767-Groovy-to-list-all-jobs

xsuvu9jc

xsuvu9jc1#

一个选项是检查作业的构建日志。日志通常包含您执行的命令。为此,您可以使用类似下面的脚本。

def commandToCheck = "docker --version"

Jenkins.instance.getAllItems(Job.class).each { jobitem ->
  if(jobitem.getLastBuild() != null) {
    def log = jobitem.getLastBuild().getLog()
        if(log.contains(commandToCheck)) {
            println("The Job: " + jobitem.getName() + " has the command")
        }
  }
}

另一种方法是获取管道脚本定义并在其中进行搜索。要获取管道定义,可以使用如下脚本。

Jenkins.instance.getAllItems(Job.class).each { jobitem ->
      if(jobitem instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob) {
        if(jobitem.getDefinition() instanceof org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition) {
          println("JobName " + jobitem.getName() + " || Pipeline Script: "+ jobitem.getDefinition().getScript())
        }       
    }     
}

相关问题