有没有办法在我的项目的GitHub Readme.md上显示Jenkins构建状态?
我使用Jenkins运行持续集成构建。在每次提交之后,它确保在最终生成文档和发行包之前编译所有内容,以及执行单元和集成测试。
仍然存在无意中犯下破坏构建的东西的风险。访问GitHub项目页面的用户知道当前主服务器处于该状态会很好。
答案 0 :(得分:151)
好的,这里有关于如何设置Jenkins来设置GitHub构建状态的方法。这假设您已经让Jenkins使用GitHub插件配置为在每次推送时都进行构建。
转到GitHub,登录,转到设置,个人访问令牌,点击生成新令牌。
检查 repo:status (我不确定这是否有必要,但我做到了,它对我有用)。
生成令牌,复制它。
确保您将要使用的GitHub用户是存储库协作者(用于私有存储库),或者是具有推送和拉取访问权限(用于组织存储库)到您想要的存储库的团队的成员建立。
转到Jenkins服务器,登录。
在 GitHub网络摘要下选择让Jenkins自动管理摘要网址,然后指定您的GitHub 用户名和您在第3步中获得的OAuth令牌。
确认它适用于测试凭据按钮。 保存设置。
找到Jenkins作业并在GitHub提交上添加设置构建状态
那就是它。现在进行测试构建并转到GitHub存储库以查看它是否有效。单击主存储库页面中的分支以查看构建状态。
您应该看到绿色复选标记:
答案 1 :(得分:35)
我所做的很简单:
添加一个始终成功的帖子任务插件
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!\"
}"
添加一个帖子任务插件,如果“标记为构建失败”
将导致失败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!\"
}"
您还可以在测试开始时添加对待处理的调用
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!\"
}"
答案 2 :(得分:26)
与此同时,Jenkins和GitHub的用户界面发生了一些变化,花了我一段时间才弄清楚现在如何正确配置Jenkins。此处的说明基于Jenkins 2.121.1版。
我还假设您已经通过Webhook或轮询触发了Jenkins Job。 这些是我为使其正常运行所采取的步骤:
repo:status
Configure System
并将OAuth Secret添加为 GitHub服务器-使用Secret Text
作为身份验证方法将OAuth Secret放入其中。Set GitHub commit status
添加为构建后操作。将状态结果设置为One of the default messages and statuses
。您现在将看到提交和分支的状态:
答案 3 :(得分:21)
此插件应该有效:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
您应该可以将这样的徽章嵌入到README.md
文件中:
答案 4 :(得分:11)
Commit Status API可让您看到“Repo Statuses API”。
自2013年4月26日起,您现在可以在build status上看到GitHub repo branch page:
这意味着通过访问GitHub项目页面来查看这些状态而不是只有Jenkins是另一种方式。
从2013年4月30日开始,API endpoint for commit statuses已扩展为允许分支和标记名称,以及提交SHA 。
答案 5 :(得分:10)
此插件还会为您提供一个徽章网址,您可以在README.md中发布,看起来像这样
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
答案 6 :(得分:7)
如果您在Github
上安装了Jenkins
插件,则可以在Post build actions
中执行此操作:
答案 7 :(得分:3)
关于设置Jenkins和GitHub的受保护分支。我正在使用Jenkins 2.6,这些是我为使其工作所采取的步骤:
在您的存储库的GitHub网页上:
在Jenkins服务器上: (确保安装了Git和GitHub插件)
此外,请确保您的Jenkins正在使用的GitHub帐户是存储库的协作者。我已将其设置为写入权限级别。
希望这有帮助。
答案 8 :(得分:3)
在 README.md 中添加以下行,并根据您的jenkins项目更改这两个网址。
[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
答案 9 :(得分:1)
修改强>
我不再使用这种方法,请使用其他答案之一。
更新:我最终做了什么,针对我们的具体情况: (以上答案非常棒 - 谢谢!)
因为我们的构建服务器不在互联网上,所以我们有一个脚本将构建状态发布到github中的gh-pages分支。
GitHub缓存图像,因此我们创建了.htaccess文件,指示构建状态图像的短缓存超时。
将其放入包含构建状态图像的目录:
ExpiresByType image/png "access plus 2 minutes"
Here's构建脚本。发布到gh-pages的目标是 ' - publish.site.dry.run'
配置少于400行,我们有:
即可。 。并且此脚本可以在Jenkins内部或外部运行,以便:
结果:
Project main page具有构建状态,在每次构建后更新,以及最新的API文档,测试结果和测试覆盖率。
答案 10 :(得分:1)
Jently更新了您的Github commit status(如上文@vonc所述),遗憾的是他们尚未实施Repo Status API
答案 11 :(得分:1)
我按照Alex的指示进行了操作。
但是,对于GitHub Enterprise,在将服务器添加到Jenkins时,您需要修改API URL。
例如,如果您的公司是creditcard.com,则您的URL为
答案 12 :(得分:0)
对于管道项目,您可以像这样使用post部分:
>>> my_list = [1,1,1,1, 2, 3, 3, 4, 5, 6, 6, 3, 7]
>>> list(set(my_list))
[1, 2, 3, 4, 5, 6, 7]
>>>
只需更改“https://github.com/my-user/my-repo”即可满足您的 github 存储库。
<块引用>