Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Jenkins那里,我如何获得JSON中当前正在运行的作业的列表?_Jenkins - Fatal编程技术网

从Jenkins那里,我如何获得JSON中当前正在运行的作业的列表?

从Jenkins那里,我如何获得JSON中当前正在运行的作业的列表?,jenkins,Jenkins,我可以通过远程API找到有关Jenkins服务器的所有信息,但不能找到当前正在运行的作业列表 这个, http://my-jenkins/computer/api/json 或 这似乎是最符合逻辑的选择,但它们没有说明(除了作业数)哪些作业正在实际运行。有点麻烦,但我认为当您在/jenkins/api/json?pretty=true上执行GET时,可以通过查看作业对象中的颜色键来推断当前正在运行哪些作业。如果Jenkins中给定作业的“球”图标已设置动画,则我们知道它正在运行 查看JSON响

我可以通过远程API找到有关Jenkins服务器的所有信息,但不能找到当前正在运行的作业列表

这个,

http://my-jenkins/computer/api/json


这似乎是最符合逻辑的选择,但它们没有说明(除了作业数)哪些作业正在实际运行。

有点麻烦,但我认为当您在
/jenkins/api/json?pretty=true
上执行
GET
时,可以通过查看作业对象中的颜色键来推断当前正在运行哪些作业。如果Jenkins中给定作业的“球”图标已设置动画,则我们知道它正在运行

查看JSON响应中的作业对象数组:

{
 ...
  "jobs" : [
    {
      "name" : "Test Job 1",
      "url" : "http://localhost:8000/jenkins/job/Test%20Job%201/",
      "color" : "blue"
    },
    {
      "name" : "Test Job 2",
      "url" : "http://localhost:8000/jenkins/job/Test%20Job%202/",
      "color" : "blue_anime"
    }
  ...
}
在这种情况下,
“颜色”:“蓝色动画”
表示作业当前正在运行,而
“颜色”:“蓝色”
表示作业未运行


希望这能有所帮助。

我有一个视图,使用该视图可以筛选当前正在运行的作业,然后您可以在视图页面上使用
/api/json
查看正在运行的作业。我也有一个用于流产、不稳定等

更新

选择“编辑视图”→ 作业筛选器添加作业筛选器▼生成状态过滤器
生成状态:☑ 当前正在建设

匹配类型:Exclude Unmatched-…

在作业上对json api的以下调用中封送“building:true”的输出和过滤器,以过滤掉无关的内容(希望这有帮助):


詹金斯大学的工作构建之间经常存在混淆,特别是因为工作通常被称为“构建工作”

  • 作业(或“构建作业”或“项目”)包含描述运行内容和运行方式的配置
  • 构建是作业的执行。构建包含有关开始和结束时间、状态、日志等的信息
有关更多信息,请参阅

如果希望当前正在生成的作业(即有一个或多个运行的生成),最快的方法是使用REST API和XPath对以
\u anime
结尾的颜色进行过滤,如下所示:

http://jenkins.example.com/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs
http://jenkins.example.com/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds
http://<host>/api/json?tree=jobs[name,lastBuild[building,timestamp]]
将为您提供如下信息:

{
  "builds" : [
{
  "actions" : [
    {

    },
    {
      "causes" : [
        {
          "userId" : "cheeseinvert"
        }
      ]
    },
    {

    },
    {

    },
    {

    },
    {

    }
  ],
  "building" : true,
  "duration" : 0,
  "id" : "2013-05-07_13-20-49",
  "timestamp" : 1367958049745,
  "builtOn" : "serverA",
  "changeSet" : {

  }
}, ...

前置数据库
http://jenkins.example.com/job/my_first_job/
蓝色动画
SDD\卖方\仪表板
http://jenkins.example.com/job/my_second_job/
蓝色动画
Jenkins使用
color
字段指示作业的状态,其中
\u anime
后缀表示作业当前正在生成

不幸的是,这不会提供任何关于实际运行的构建的信息。作业的多个实例可能同时运行,并且运行的构建并不总是最后启动的构建

如果要列出所有正在运行的构建,还可以使用REST API获得快速答案,如下所示:

http://jenkins.example.com/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs
http://jenkins.example.com/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds
http://<host>/api/json?tree=jobs[name,lastBuild[building,timestamp]]
将为您提供如下信息:

{
  "builds" : [
{
  "actions" : [
    {

    },
    {
      "causes" : [
        {
          "userId" : "cheeseinvert"
        }
      ]
    },
    {

    },
    {

    },
    {

    },
    {

    }
  ],
  "building" : true,
  "duration" : 0,
  "id" : "2013-05-07_13-20-49",
  "timestamp" : 1367958049745,
  "builtOn" : "serverA",
  "changeSet" : {

  }
}, ...

http://jenkins.example.com/job/my_first_job/1412/
http://jenkins.example.com/job/my_first_job/1414/
http://jenkins.example.com/job/my_second_job/13126/

在这里,您可以看到当前运行的所有构建的列表。您需要解析URL以将作业名称与内部版本号分开。请注意,
my_first_作业
有两个当前正在运行的版本。

您可以使用jenkins树api,使用如下端点:

http://jenkins.example.com/api/xml?tree=jobs[name,url,color]&xpath=/hudson/job[ends-with(color/text(),%22_anime%22)]&wrapper=jobs
http://jenkins.example.com/computer/api/xml?tree=computer[executors[currentExecutable[url]],oneOffExecutors[currentExecutable[url]]]&xpath=//url&wrapper=builds
http://<host>/api/json?tree=jobs[name,lastBuild[building,timestamp]]
http:///api/json?tree=jobs[名称,最后生成[生成,时间戳]]

如果访问
/lastBuild/api/json
可以查看
lastBuild
中可以使用的属性。我遇到了一个类似的问题,在我重新启动jenkins后,一些管道构建卡在构建状态中(piepline作业应该是持久的,可以继续,但大多数时候它们会无限期地卡在一起)

这些构建不使用执行器,因此找到它们的唯一方法是打开每个作业

当项目被视为建筑时,所有其他答案似乎都有效,即:最后一次建筑是建筑。但他们忽略了过去仍在建设的建筑

以下查询适用于我,并提供了当前运行的所有构建,即:它们没有结果


这个问题的可能重复之处在于检查单个构建结果,我希望检查当前正在运行的作业。在这种情况下不同的事情。啊,我的错。我想我偶然发现了一个解决方案。谢谢,尽管球并不总是讲正确的故事。特别是,如果作业在运行时被禁用(我的情况就是这样),则即使作业当前正在运行,球的颜色也是“禁用”的http:///api/json?pretty=true 在我的2.164版本中,我有文件夹,它只显示文件夹。您必须使用文件夹json中的URL发出另一个请求,其中包含/api/json。因此,要找到所有正在运行的作业需要一堆树跟踪(当然,如果没有进入关机模式,它们会随着调用而改变)。如果使用文件夹,它们似乎是“嵌套在作业中的作业”,因此需要一个更复杂的树,例如
/api/json?tree=jobs[name,url,color,lastBuild][building,timestamp],作业[name,url,color,lastBuild[building,timestamp],作业[name,url,color,lastBuild[building,timestamp],作业[name,url,color,lastBuild[building,timestamp][&pretty=true
是否有任何方法可以显示只有
building:true
和忽略
building:false
的结果?这似乎不再有效,在我的情况下,它会返回所有作业,而不是生成。如果您需要所有当前运行的生成(及其生成编号),这在当前版本的Jenkins上似乎有效(2.103):你知道有没有办法获取正在运行的作业的构建?我创建了一个视图,正如你所描述的,json包含作业名称,但是