有没有办法在我项目的GitHub Readme.md上显示Jenkins构建状态?
我使用Jenkins来运行连续集成构建。每次提交后,在最终生成文档和发行包之前,它确保所有内容都能编译并执行单元测试和集成测试。
仍然存在不经意间破坏构建的风险。访问GitHub项目页面的用户最好知道当前的母版处于该状态。
有没有办法在我项目的GitHub Readme.md上显示Jenkins构建状态?
我使用Jenkins来运行连续集成构建。每次提交后,在最终生成文档和发行包之前,它确保所有内容都能编译并执行单元测试和集成测试。
仍然存在不经意间破坏构建的风险。访问GitHub项目页面的用户最好知道当前的母版处于该状态。
Answers:
好的,这是设置Jenkins来设置GitHub构建状态的方法。假设您已经配置了GitHub插件的Jenkins,可以在每次推送时进行构建。
转到GitHub,登录,转到“设置”,“ 个人访问令牌”,然后单击“ 生成新令牌”。
检查repo:status(我不确定这是否有必要,但是我做到了,对我有用。)
生成令牌,将其复制。
确保您要使用的GitHub用户是存储库协作者(用于私有存储库)或是具有对您要构建的存储库的推入和拉出访问权限(用于组织存储库)的团队的成员。
转到您的Jenkins服务器,登录。
在GitHub Web Hook下,选择让Jenkins自动管理URL挂钩,然后指定您的GitHub 用户名和在步骤3中获得的OAuth令牌。
验证它是否与“ 测试凭据”按钮一起使用。 保存设置。
找到Jenkins作业并在GitHub上添加Set build status提交到构建后步骤
而已。现在进行测试构建,然后转到GitHub存储库以查看它是否有效。单击主存储库页面中的“ 分支 ”以查看构建状态。
您应该看到绿色的复选标记:
同时,Jenkins和GitHub的用户界面发生了一些变化,花了我一段时间才弄清楚现在如何正确配置Jenkins。此处的说明基于Jenkins 2.121.1版。
我还假设您已经通过Webhook或轮询触发了Jenkins Job的配置。这些是我为使其正常运行所采取的步骤:
repo:status
Configure System
并添加OAuth的秘密作为GitHub的服务器 -使用Secret Text
作为身份验证方法把OAuth的秘密在那里。Set GitHub commit status
为构建后操作。将状态结果设置为One of the default messages and statuses
。现在,您将看到提交和分支的状态:
Manage Hooks
框突出显示,但未在上面的图像中打勾,这是否意味着保存时应取消选中该框?
我所做的很简单:
添加一个后任务插件,该插件总是能够成功
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!\"
}"
sh
,甚至可以利用Jenkins凭证存储与withCredentials
该插件应该可以正常工作:https : //wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
您应该能够将这样的徽章嵌入README.md
文件中:
从2013年4月26日起,您现在可以在GitHub repo分支页面上查看构建状态:
这意味着这是另一种方式,通过访问GitHub项目页面来查看这些状态,而不是仅拥有Jenkins。
curl
(developer.github.com/v3/repos/statuses/...)
还有这个插件,可以为您提供徽章网址,您可以将其张贴在README.md中,如下所示
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
如果您的计算机上Github
安装了插件Jenkins
,则可以这样操作Post build actions
:
在您的README.md中的下面添加一行,并根据您的jenkins项目更改两个URL。
[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
关于设置Jenkins和GitHub的受保护分支。我正在使用Jenkins 2.6,以下是我使其工作的步骤:
在存储库的GitHub网页上:
在Jenkins服务器上:(确保已安装Git和GitHub插件)
另外,请确保您的Jenkins使用的GitHub帐户是该存储库的协作者。我已经设置了写权限级别。
希望这可以帮助。
编辑:
我不再使用这种方法,请使用其他答案之一。
更新:对于特定的案例,我最终做了什么:( 以上答案很好-谢谢!)
因为我们的构建服务器不在Internet上,所以我们有一个脚本可以将构建状态发布到github中的gh-pages分支。
GitHub缓存图像,因此我们创建了.htaccess文件,该文件指示构建状态图像的缓存超时时间较短。
将其放入带有构建状态映像的目录中:
ExpiresByType image/png "access plus 2 minutes"
这是构建脚本。发布到gh页的目标是'--publish.site.dry.run'
少于400行的配置,我们有:
。。并且此脚本可以在Jenkins内外运行,以便:
结果:
项目主页具有构建状态,每次构建后都会更新,以及最新的API文档,测试结果和测试范围。