通过github api获取构建状态

Nip*_*rus 5 github github-api

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

Von*_*onC 5

它不直接提供状态,但允许您创建状态

这意味着 CI 可以有一个最终构建步骤,以这种方式将状态发布到 GitHub 存储库。

POST /repos/:owner/:repo/statuses/:sha
Run Code Online (Sandbox Code Playgroud)

例如:

{
  "state": "success",
  "target_url": "https://example.com/build/status",
  "description": "The build succeeded!",
  "context": "continuous-integration/jenkins"
}
Run Code Online (Sandbox Code Playgroud)

(对于给定的 SHA1)


例如,请参阅“ Github Commit Status API with Bamboo from Atlassian ”,其中:

  • ${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
    
    Run Code Online (Sandbox Code Playgroud)
  • 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
    
    Run Code Online (Sandbox Code Playgroud)


Wad*_*ams 4

您可以访问特定参考的状态

GET https://api.github.com/repos/:owner/:repo/commits/:ref/statuses

对于 的值:ref,您可以使用 SHA、分支名称或标记名称。