列出在特定从属节点上运行的所有作业

时间:2015-06-17 05:01:55

标签: jenkins jenkins-plugins slave

在我们的Jenkins主机上,一个多配置项目用于在许多实际工作的从站上传播高度并行的任务。

现在我想列出在特定从属节点上运行的所有作业。有没有办法实现这个目标?我只看到大表中一个矩阵父作业的所有矩阵子作业。或者我可以列出单个子作业的历史记录。但是如果我想获得与运行作业的节点的连接,我总是要检查日志。

3 个答案:

答案 0 :(得分:3)

您可以使用Description Setter Plugin,如下所示:

enter image description here

然后,您将在每个构建的描述中包含节点标签:

enter image description here

答案 1 :(得分:2)

  

现在我想列出在特定从属节点上运行的所有作业。

我没有找到任何现有的插件来解决问题。但是你可以使用Jenkins Script Console自动完成它。 这是一个简单的groovy脚本,它遍历job的构建并检查该构建是否为built on具体节点:

def jobs = hudson.model.Hudson.instance.items

nodeName = 'YOUR_NODE_NAME'

jobs.each { job ->
  urls = []
  job.builds.each { build ->
    nodeName == build.builtOnStr && urls << build.absoluteUrl
  }
  urls && println("${job.name}\n\t${urls.sort().join('\n\t')}")
}

示例输出:

JOB1    
    JENKINS_URL/job/JOB1/11/
JOB2
    JENKINS_URL/job/JOB2/59/
    JENKINS_URL/job/JOB2/60/
    JENKINS_URL/job/JOB2/61/
    ...

如果您想更进一步,可以使用它来准备一些可点击的HTML报告。首先想到的是发送带有Email-ext plugin的电子邮件。

注意:该脚本不适用于nodeName = 'master'。这应该是预期的'因为主,实际上,不是节点。

答案 2 :(得分:1)

我使用脚本控制台

解决了这个问题
for (item in hudson.model.Hudson.getInstance().getItems()) {
  if (item instanceof hudson.model.FreeStyleProject) {
    if (item.getAssignedLabel() != null && item.getAssignedLabel().getName() == 'master') {
      println(item.getName() + " " + item.getAssignedLabel())
    }
  }
}