Jenkins管道从webhook读取提交状态

时间:2016-11-04 18:28:51

标签: github jenkins-pipeline

我试图找到一种让Jenkins工作由匹配特定模式的PR评论触发的方法,让工作检查PR的最新提交状态是否已通过,这将是由PR打开时运行的单独CI作业设置,并合并代码。 PR的评论将表示代码已经过适当的同行评审,提交状态表示所有前端和后端单元测试都已通过。

我真正不确定的唯一部分是从webhook有效负载中检索提交状态。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

<强> TLDR

调用statuses API列出针对该SHA创建的所有状态或使用combined status API

查找最新提交

如果您没有最新提交的SHA,那么有几种方法可以从API端点获取此信息。

  

这将假设有一个应用程序监听webhook事件,特别是IssuesCommentEvent,以解析评论的特定模式&#39;

  1. 获取Pull请求的URL
  2. webhook事件将包含JSON正文中的Pull Request url,例如:

    {
      "action": "created",
      "issue": {
       ...
         "pull_request": {
            "url": "https://api.github.com/repos/sample/mysample/pulls/13",
            ...
            }
         }
      }   
    }
    
    1. 获取SHA或状态端点
    2. 使用上一步中返回的拉取请求API endpoing url。 JSON正文将包含statuses_url值,该值将返回针对该SHA创建的每个状态,或者获取SHA并调用前面提到的任何状态端点。

        {
           "statuses_url": "https://api.github.com/repos/sample/mysamples/statuses/1985617647f17fe4fc85efeeaffef24581a12488",
           ...
           "head":{
              "sha": "1985617647f17fe4fc85efeeaffef24581a12488",
           }
        }