有没有办法在我项目的GitHub Readme.md上显示Jenkins构建状态?
我使用Jenkins运行持续集成构建。在每次提交之后,它确保在最终生成文档和发布包之前,所有内容都已编译,并执行单元和集成测试。
仍然存在无意中提交一些破坏构建的内容的风险。对于访问GitHub项目页面的用户来说,知道当前主程序处于该状态是很好的。
这个插件应该工作:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
你应该能够像这样将徽章嵌入到你的README.md文件中:
README.md
提交状态API允许你看到“回购状态API”。
自2013年4月26日起,你现在可以在你的GitHub回购分支页面上看到构建状态:
这意味着它是另一种方式,通过访问GitHub项目页面来查看这些状态,而不是只有Jenkins。
从2013年4月30日开始,用于提交状态的API端点已经扩展到允许分支和标记名称,以及提交sha。
编辑:
我不再使用这种方法,请使用其他答案之一。
更新:对于我们的特定情况,我最终做了什么: (上面的回答很棒-谢谢!)
因为我们的构建服务器不在互联网上,我们有一个脚本来发布构建状态到github中的gh-pages分支。
GitHub缓存图像,因此我们创建了.htaccess文件,该文件指示构建状态图像有一个短的缓存超时。
把这个和build-status镜像放在一起:
ExpiresByType image/png "access plus 2 minutes"
这是构建脚本。发布到gh-pages的目标是< em >“——publish.site.dry.run”< / em >
在少于400行的配置中,我们有:
。。这个脚本可以在Jenkins内部或外部运行,这样:
结果:
项目主页面有构建状态,在每次构建后更新,以及最新的API文档、测试结果和测试覆盖率。
我所做的很简单:
添加一个Post Task插件,总是放置成功
curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{ \"state\": \"success\", \"target_url\": \"${BUILD_URL}\", \"description\": \"The build has succeeded!\" }"
Add a Post Task Plugin that will put failure if "marked build as failure"
curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{ \"state\": \"failure\", \"target_url\": \"${BUILD_URL}\", \"description\": \"The build has failed!\" }"
You can also add a call to pending at the beginning of tests
curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{ \"state\": \"pending\", \"target_url\": \"${BUILD_URL}\", \"description\": \"The build is pending!\" }"
Jently更新你的Github提交状态(如上所述@vonc),不幸的是,他们还没有实现回购状态API
如果你在你的Jenkins上安装了Github插件,你可以在Post build actions中这样做:
Jenkins
Github
Post build actions
好的,下面是如何设置Jenkins来设置GitHub构建状态。这里假设你已经有了Jenkins和GitHub插件,可以在每次推送时进行构建。
打开GitHub,登录,进入设置, 开发人员设置, 个人访问令牌,然后点击生成新令牌。
检查回购:状态(我不确定这是必要的,但我这样做了,它为我工作)。
转到Jenkins服务器,登录。
管理詹金斯→配置系统
在GitHub Web Hook下选择让Jenkins自动管理钩子url,然后指定你的GitHub 用户名和你在步骤3中得到的OAuth令牌。
验证它与测试证书按钮一起工作。保存设置。
就是这样。现在做一个测试构建,去GitHub存储库看看它是否工作。在主存储库页面中单击分支机构查看构建状态。
你应该看到绿色的复选标记:
还有这个插件,它会给你一个徽章的url,你可以在你的README中发布。Md,看起来像这样
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
关于设置Jenkins和GitHub的受保护分支。我使用的是Jenkins 2.6,以下是我让它工作的步骤:
在你的仓库的GitHub网页上:
在Jenkins服务器上: (确保你已经安装了Git和GitHub插件)
此外,确保Jenkins使用的GitHub帐户是存储库的合作者。我设置了写权限级别。
希望这能有所帮助。
在你的README.md中添加下面这行,并根据你的jenkins项目更改这两个URL。
[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
与此同时,Jenkins和GitHub的UI发生了一些变化,我花了一段时间才弄清楚如何正确配置Jenkins。这里的解释基于Jenkins版本2.121.1。
repo:status
Configure System
Secret Text
Set GitHub commit status
One of the default messages and statuses
你现在会看到你的提交和分支的状态:
我遵循亚历克斯的指示,它工作了。
但是,对于GitHub企业,在将服务器添加到Jenkins时需要修改API URL。
例如,如果您的公司是creditcard.com,您的URL将是
https://github.creditcard.com/api/v3/
对于管道工程,你可以像这样使用帖子部分:
void setBuildStatus(String message, String state) { step([ $class: "GitHubCommitStatusSetter", reposSource: [$class: "ManuallyEnteredRepositorySource", url: "https://github.com/my-user/my-repo"], contextSource: [$class: "ManuallyEnteredCommitContextSource", context: "ci/jenkins/build-status"], errorHandlers: [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]], statusResultSource: [ $class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]] ] ]); } pipeline { agent any triggers { githubPush() } stages { stage('Hello') { steps { echo 'Hello World' } } } post { success { setBuildStatus("Build succeeded", "SUCCESS"); } failure { setBuildStatus("Build failed", "FAILURE"); } } }
只需改变"https://github.com/my-user/my-repo"满足你的github回购。
参考:https://stackoverflow.com/a/47162309/4261333
加上这个答案,也加上这个答案他们已经回答了这个问题,但没有给我们一个关于这个问题的正确直觉
我的直觉是这样的:
GH settings -> Developer settings -> Personal access tokens
< >强资源:< / >强