有没有办法在我项目的GitHub Readme.md上显示Jenkins构建状态?

我使用Jenkins运行持续集成构建。在每次提交之后,它确保在最终生成文档和发布包之前,所有内容都已编译,并执行单元和集成测试。

仍然存在无意中提交一些破坏构建的内容的风险。对于访问GitHub项目页面的用户来说,知道当前主程序处于该状态是很好的。


当前回答

与此同时,Jenkins和GitHub的UI发生了一些变化,我花了一段时间才弄清楚如何正确配置Jenkins。这里的解释基于Jenkins版本2.121.1。

我还假设你已经配置了你的Jenkins作业由网络钩子或轮询触发。 以下是我为让它运转起来所采取的步骤:

配置Github:创建个人访问令牌与OAuth范围repo:状态 配置Jenkins:配置系统并添加OAuth秘密作为GitHub服务器-使用秘密文本作为身份验证方法,将OAuth秘密放在那里。 配置你的Jenkins Job:添加设置GitHub提交状态为Post-build action。将“状态结果”设置为默认消息和状态之一。 在GitHub上检查你的结果:检查你是否在GitHub提交上获得了构建状态和构建执行持续时间。

配置Github





配置詹金斯






配置Jenkins Job




结果

你现在会看到你的提交和分支的状态:

其他回答

与此同时,Jenkins和GitHub的UI发生了一些变化,我花了一段时间才弄清楚如何正确配置Jenkins。这里的解释基于Jenkins版本2.121.1。

我还假设你已经配置了你的Jenkins作业由网络钩子或轮询触发。 以下是我为让它运转起来所采取的步骤:

配置Github:创建个人访问令牌与OAuth范围repo:状态 配置Jenkins:配置系统并添加OAuth秘密作为GitHub服务器-使用秘密文本作为身份验证方法,将OAuth秘密放在那里。 配置你的Jenkins Job:添加设置GitHub提交状态为Post-build action。将“状态结果”设置为默认消息和状态之一。 在GitHub上检查你的结果:检查你是否在GitHub提交上获得了构建状态和构建执行持续时间。

配置Github





配置詹金斯






配置Jenkins Job




结果

你现在会看到你的提交和分支的状态:

好的,下面是如何设置Jenkins来设置GitHub构建状态。这里假设你已经有了Jenkins和GitHub插件,可以在每次推送时进行构建。

Go to GitHub, log in, go to Settings, Developer Settings, Personal access tokens and click on Generate new token. Check repo:status (I'm not sure this is necessary, but I did it, and it worked for me). Generate the token, copy it. Make sure the GitHub user you're going to use is a repository collaborator (for private repos) or is a member of a team with push and pull access (for organization repos) to the repositories you want to build. Go to your Jenkins server, log in. Manage Jenkins → Configure System Under GitHub Web Hook select Let Jenkins auto-manage hook URLs, then specify your GitHub username and the OAuth token you got in step 3. Verify that it works with the Test Credential button. Save the settings. Find the Jenkins job and add Set build status on GitHub commit to the post-build steps

就是这样。现在做一个测试构建,去GitHub存储库看看它是否工作。单击主存储库页面中的Branches查看构建状态。

你应该看到绿色的复选标记:

这个插件应该可以工作:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

您应该能够将这样的徽章嵌入到README中。md文件:

编辑:

我不再使用这种方法,请使用其他答案之一。

更新:对于我们的具体情况,我最终做了什么:(上面的答案很棒-谢谢!)

因为我们的构建服务器不在互联网上,我们有一个脚本来发布构建状态到github中的gh-pages分支。

开始构建戳记失败 构建结束,戳记成功 项目在主项目之后运行,以发布结果——>构建状态、API文档、测试报告和测试覆盖率。

GitHub缓存图像,因此我们创建了.htaccess文件,该文件指示构建状态图像有一个短的缓存超时。

把这个和build-status镜像放在一起:

ExpiresByType image/png "access plus 2 minutes"

下面是构建脚本。发布到gh-page的目标是'——publish.site.dry.run'

在少于400行的配置中,我们有:

编译检查 单元和集成测试 测试报告 代码覆盖率报告 API文档 发布到Github

。。这个脚本可以在Jenkins内部或外部运行,这样:

开发人员可以在提交之前运行这个脚本,从而减少了错误构建影响其他构建的可能性。 故障很容易在本地重现。

结果:

项目主页有构建状态,每次构建后都会更新,还有最新的API文档、测试结果和测试覆盖率。

关于设置Jenkins和GitHub的受保护分支。我使用的是Jenkins 2.6,以下是我让它工作的步骤:

在你的仓库的GitHub网页上:

进入“设置>分支”。 在保护分支下,单击 选择一个分支淹没菜单,并选择你想要的分支 设置为受保护的分支。 根据需要启用这些选项。

在Jenkins服务器上: (确保你已经安装了Git和GitHub插件)

进入“Manage Jenkins > Configure System”界面。 在GitHub下,将API URL设置为https://api.github.com。尽管这是默认值。 为凭证选择生成的令牌。如果您还没有生成令牌,请单击Advanced…然后在附加操作中,您可以将您的登录名和密码转换为令牌,并将其用作您的凭据。

此外,确保Jenkins使用的GitHub帐户是存储库的合作者。我设置了写权限级别。

希望这能有所帮助。