Github Jenkins管道从webhook读取提交状态

Github Jenkins管道从webhook读取提交状态,github,jenkins-pipeline,Github,Jenkins Pipeline,我试图找到一种方法,让Jenkins作业由符合特定模式的PR注释触发,让作业检查PR的最新提交状态是否通过,这将由单独的CI作业设置,在PR打开时运行,并合并代码。PR的评论将象征着代码已经得到了适当的同行评审,提交状态表示所有前端和后端单元测试都已经通过 我唯一不确定的是从webhook负载中检索提交状态。有什么建议吗?TLDR 调用列出针对该SHA创建的所有状态,或使用 查找最新提交 如果您没有最新提交的SHA,那么有几种方法可以从API端点获得它 { "statuses_u

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

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

TLDR

调用列出针对该SHA创建的所有状态,或使用


查找最新提交

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

  {
     "statuses_url": "https://api.github.com/repos/sample/mysamples/statuses/1985617647f17fe4fc85efeeaffef24581a12488",
     ...
     "head":{
        "sha": "1985617647f17fe4fc85efeeaffef24581a12488",
     }
  }
这将假设有一个应用程序监听webhook事件,特别是,解析注释主体的“特定模式”

  • 获取拉取请求的URL
  • webhook事件将在JSON正文中包含
    url
    ,例如:

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

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

    调用列出针对该SHA创建的所有状态,或使用


    查找最新提交

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

      {
         "statuses_url": "https://api.github.com/repos/sample/mysamples/statuses/1985617647f17fe4fc85efeeaffef24581a12488",
         ...
         "head":{
            "sha": "1985617647f17fe4fc85efeeaffef24581a12488",
         }
      }
    
    这将假设有一个应用程序监听webhook事件,特别是,解析注释主体的“特定模式”

  • 获取拉取请求的URL
  • webhook事件将在JSON正文中包含
    url
    ,例如:

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

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