2016-05-03 34 views
4

我有一个不同阶段的管道。我希望当前的作业检查在以前的版本中已经传递了多少个阶段并将其记录在控制台中?工作流程/管道插件的访问阶段结果

考虑,这是我目前的管道

node(){ 
stage "1" 
do something 

stage "2" 
do something else 
} 

我想一个Groovy脚本来给我这样的事情

println currentBuild.previousBuild.getStage("1").result 

我的代码的目的是跟踪成功跨越不同阶段&失败我建立。这种方法有没有其他选择?

+0

你有一些Groovy的代码,获取阶段及其结果的列表?以某种方式使用REST API似乎是一种矫枉过正。 – sorin

回答

4

你绝对可以使用Pipeline REST API Plugin,对我来说,Jenkins 2.13开箱即可使用。

通过解析生成的JSON,您可以获得类似于您期望的阶段状态。对于api调用,我个人使用http_request插件。

从文档GET /工作/:任务名称/:运行ID/wfapi /描述回报:

{ 
    "_links": { 
     "self": { 
      "href": "/jenkins/job/Test%20Workflow/16/wfapi/describe" 
     }, 
     "pendingInputActions": { 
      "href": "/jenkins/job/Test%20Workflow/16/wfapi/pendingInputActions" 
     } 
    }, 
    "id": "2014-10-16_13-07-52", 
    "name": "#16", 
    "status": "PAUSED_PENDING_INPUT", 
    "startTimeMillis": 1413461275770, 
    "endTimeMillis": 1413461285999, 
    "durationMillis": 10229, 
    "stages": [ 
     { 
      "_links": { 
       "self": { 
        "href": "/jenkins/job/Test%20Workflow/16/execution/node/5/wfapi/describe" 
       } 
      }, 
      "id": "5", 
      "name": "Build", 
      "status": "SUCCESS", 
      "startTimeMillis": 1413461275770, 
      "durationMillis": 5228 
     }, 
     { 
      "_links": { 
       "self": { 
        "href": "/jenkins/job/Test%20Workflow/16/execution/node/8/wfapi/describe" 
       } 
      }, 
      "id": "8", 
      "name": "Test", 
      "status": "SUCCESS", 
      "startTimeMillis": 1413461280998, 
      "durationMillis": 4994 
     }, 
     { 
      "_links": { 
       "self": { 
        "href": "/jenkins/job/Test%20Workflow/16/execution/node/10/wfapi/describe" 
       } 
      }, 
      "id": "10", 
      "name": "Deploy", 
      "status": "PAUSED_PENDING_INPUT", 
      "startTimeMillis": 1413461285992, 
      "durationMillis": 7 
     } 
    ] 
} 
相关问题