显示jenkins目前的状态build立在GitHub回购
有没有办法在我的项目的GitHub Readme.md上显示Jenkins构build状态?
我使用Jenkins运行持续集成构build。 在每次提交之后,它将确保编译所有内容,并执行单元和集成testing,然后才能最终生成文档并释放捆绑包。
仍然存在无意中犯下破坏构build的风险。 对于访问GitHub项目页面的用户来说,了解当前的主服务器处于该状态将会很好。
好的,你可以设置Jenkins来设置GitHub的构build状态。 这个假设你已经把Jenkins和GitHub插件configuration为在每次推动时都进行构build。
-
去GitHub,login,进入设置 , 个人访问令牌 ,点击生成新的令牌 。
-
检查回购:状态 (我不知道这是必要的,但我做到了,它为我工作)。
-
生成令牌,复制它。
-
确保你要使用的GitHub用户是一个存储库协作者(用于私人回购),或者是一个团队成员,具有推拉访问(用于组织回购)到你想要构build的存储库。
-
转到您的Jenkins服务器,login。
- pipe理jenkins → configuration系统
-
在GitHub Web Hook下,select让Jenkins自动pipe理挂钩url ,然后在步骤3中指定您的GitHub 用户名和OAuth令牌 。
-
validation它是否与testing凭证button配合使用。 保存设置。
-
findJenkins作业,并将GitHub提交上的Set build status添加到构build后步骤
而已。 现在做一个testing生成,并转到GitHub存储库,看看它是否工作。 点击主资源库页面中的分支来查看构build状态。
你应该看到绿色的复选标记:
我做的很简单:
- 安装Hudson Post Task Plugin
- 在这里创build一个个人访问令牌: https : //github.com/settings/applications
-
添加一个总是把成功的post任务插件
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!\" }"
-
添加一个post任务插件,如果“标记为失败”
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!\" }"
-
您也可以在testing开始时将呼叫添加到挂起
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!\" }"
这应该工作: https : //wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
您应该可以将其embedded到README
。
Commit Status API允许您查看“ Repo状态API ”。
自2013年4月26日起,您现在可以在GitHub仓库分支页面上看到构build状态 :
这意味着这是另一种方式,通过访问GitHub项目页面,查看这些状态,而不是只有jenkins。
自2013年4月30日起, 提交状态的API端点已扩展为允许分支和标记名称以及提交SHA 。
还有这个插件会给你一个徽章的URL,你可以在你的README.MD张贴,看起来像这样
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
如果你在Jenkins
上安装了Github
插件,你可以在Post build actions
这样做:
关于build立Jenkins和GitHub受保护的分支。 我正在使用Jenkins 2.6,这些是我做的工作步骤:
在您的存储库的GitHub网页上:
- 导航到设置>分支。
- 在“保护分支”下,单击“select分支”淹没菜单,然后select要设置为受保护分支的分支。
- 根据需要启用选项。
在Jenkins服务器上:(确保你已经安装了Git和GitHub插件)
- 导航到pipe理Jenkins>configuration系统。
- 在GitHub下,将API URL设置为https://api.github.com 。 虽然这是默认值。
- select您的生成令牌的凭据。 如果您尚未生成令牌,请点击高级…然后点击其他操作,您可以将您的login名和密码转换为令牌,并将其用作您的凭证。
另外,请确保Jenkins使用的GitHub帐户是存储库的协作者。 我已经设置了写入权限级别。
希望这可以帮助。
更新:我最终做了什么,我们的具体情况:( 以上答案是伟大的 – 谢谢!)
因为我们的构build服务器不在互联网上,所以我们有一个脚本来将构build状态发布到github中的gh-pages分支。
- build立邮票开始失败
- 构build邮票成功结束
- 项目在主项目之后运行,以发布结果 – >构build状态,API文档,testing报告和testing覆盖率。
GitHubcaching图像,所以我们创build了.htaccess文件,指示构build状态图像的caching超时。
把它放在生成状态图像的目录中:
ExpiresByType image/png "access plus 2 minutes"
这是构build脚本。 发布到gh页面的目标是“–publish.site.dry.run”
configurationless于400行,我们有:
- 编译检查
- 单元和集成testing
- testing报告
- 代码覆盖率报告
- API文档
- 发布到Github
。 。 而且这个脚本可以在Jenkins里面或外面运行,所以:
- 开发人员可以在提交之前运行此脚本,从而减less影响其他人的破坏构build的可能性。
- 失败很容易在本地重现。
结果:
项目主页具有构build状态,在每次构build之后更新,以及最新的API文档,testing结果和testing覆盖率。
Jently更新你的Github提交状态 (如上面的@vonc所述),不幸的是他们还没有实现Repo Status API
在你的README.md中添加下面的行,根据你的jenkins项目更改两个URL。
[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)