GitHub API 提供了很多功能,但是有没有一种方法可以检索提交的构建状态? GitHub UI 提供了我们配置的 CI 系统的信息,但我无法通过API看到这些信息?
GitHub API 提供了很多功能,但是有没有一种方法可以检索提交的构建状态? GitHub UI 提供了我们配置的 CI 系统的信息,但我无法通过API看到这些信息?
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
GET https://api.github.com/repos/:owner/:repo/commits/:ref/statuses
对于:ref
的值,您可以使用SHA、分支名称或标签名称。
${bamboo.repository.revision.number}
是什么(它是GitHub提交的SHA),并且对于没有以$
开头的MY_TOKEN
、USER
和REPO
变量感到有点困惑,因为我习惯于在bash中使用$
。这个问题包含了一个更简单的bash示例来实现这个答案。此外,目标网址应该以https://
开头,所以stackoverflow.com
作为目标网址是不够的。(但是> dev/null
可以隐藏这样的错误信息)。 - a.t.