Jenkins管道从webhook读取提交状态



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

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

TLDR

调用状态API列出针对该SHA创建的所有状态,或者使用组合状态API。


查找最新提交

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

这将假设有一个应用程序监听webhook事件,特别是IssuesCommentEvent,以解析注释主体的'特定模式'。

    获取拉取请求的URL

webhook事件将在JSON主体中包含Pull Request url,例如:

{
  "action": "created",
  "issue": {
   ...
     "pull_request": {
        "url": "https://api.github.com/repos/sample/mysample/pulls/13",
        ...
        }
     }
  }   
}
  • 获取SHA或状态端点
  • 使用上一步返回的结束url的pull request API。JSON主体将包含一个statuses_url值,该值将返回针对该SHA创建的每个状态,或者获取SHA并调用前面提到的任何状态端点。

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

    最新更新