通过GitHub API获取构建状态

5

GitHub API 提供了很多功能,但是有没有一种方法可以检索提交的构建状态? GitHub UI 提供了我们配置的 CI 系统的信息,但我无法通过API看到这些信息?

2个回答

5
它并不直接提供状态,但是提供给你创建状态的选项。这意味着CI可以有一个最终的构建步骤,将状态发布到GitHub仓库中。
POST /repos/:owner/:repo/statuses/:sha

例如:

{
  "state": "success",
  "target_url": "https://example.com/build/status",
  "description": "The build succeeded!",
  "context": "continuous-integration/jenkins"
}

(对于给定的SHA1)


例如,请查看来自Atlassian Bamboo的“Github Commit Status API with Bamboo”,其中:

  • ${bamboo.buildResultsUrl}是GitHub提交的SHA1:
  • <xxx>是一个占位符,可以替换为值或变量${var},如此处所示

将它们作为脚本添加到您的计划中。

  • complete.sh:

      # specs and cukes results are stored in JUnit format under test-reports
      if (grep 'failures="[^0]"' test-reports/* || \
        grep 'errors="[^0]"' test-reports/*); then
        curl -H "Authorization: token <MY_TOKEN>" --request POST \
          --data '{"state": "failure", "description": "Failed!", \
          "target_url": "${bamboo.buildResultsUrl}"}' \
          https://api.github.com/repos/<USER>/<REPO>/statuses/${bamboo.repository.revision.number} > /dev/null
      else
        curl -H "Authorization: token <MY_TOKEN>" --request POST \
          --data '{"state": "success", "description": "Success!", \
          "target_url": "${bamboo.buildResultsUrl}"}' \
          https://api.github.com/repos/<USER>/<REPO>/statuses \
          /${bamboo.repository.revision.number} > /dev/null
      fi
    
  • pending.sh:

      curl -H "Authorization: token <MY_TOKEN>" --request POST \
        --data '{"state": "pending", "description": "Build is running", \
        "target_url": "${bamboo.buildResultsUrl}"}' \
        https://api.github.com/repos/<USER>/<REPO>/statuses/${bamboo.repository.revision.number} > /dev/null
    

我最初不知道${bamboo.repository.revision.number}是什么(它是GitHub提交的SHA),并且对于没有以$开头的MY_TOKENUSERREPO变量感到有点困惑,因为我习惯于在bash中使用$这个问题包含了一个更简单的bash示例来实现这个答案。此外,目标网址应该以https://开头,所以stackoverflow.com作为目标网址是不够的。(但是> dev/null可以隐藏这样的错误信息)。 - a.t.
1
@a.t. 谢谢。我已经编辑了这个六年前的答案,考虑到了你的评论和它非常好的观点。 - VonC

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接