显示jenkins目前的状态build立在GitHub回购

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

我使用Jenkins运行持续集成构build。 在每次提交之后,它将确保编译所有内容,并执行单元和集成testing,然后才能最终生成文档并释放捆绑包。

仍然存在无意中犯下破坏构build的风险。 对于访问GitHub项目页面的用户来说,了解当前的主服务器处于该状态将会很好。

好的,你可以设置Jenkins来设置GitHub的构build状态。 这个假设你已经把Jenkins和GitHub插件configuration为在每次推动时都进行构build。

  1. 去GitHub,login,进入设置个人访问令牌 ,点击生成新的令牌

    GitHub设置的屏幕截图

  2. 检查回购:状态 (我不知道这是必要的,但我做到了,它为我工作)。

    GitHub令牌生成的截图

  3. 生成令牌,复制它。

  4. 确保你要使用的GitHub用户是一个存储库协作者(用于私人回购),或者是一个团队成员,具有推拉访问(用于组织回购)到你想要构build的存储库。

  5. 转到您的Jenkins服务器,login。

  6. pipe理jenkinsconfiguration系统
  7. GitHub Web Hook下,select让Jenkins自动pipe理挂钩url ,然后在步骤3中指定您的GitHub 用户名OAuth令牌

    Jenkins全局设置的截图

  8. validation它是否与testing凭证button配合使用。 保存设置。

  9. findJenkins作业,并将GitHub提交上的Set build status添加到构build后步骤

    Jenkins作业配置截图

而已。 现在做一个testing生成,并转到GitHub存储库,看看它是否工作。 点击主资源库页面中的分支来查看构build状态。

点击“分支”主页的sceenshot,

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

GitHub分支与构建状态的屏幕截图

我做的很简单:

  1. 安装Hudson Post Task Plugin
  2. 在这里创build一个个人访问令牌: https : //github.com/settings/applications
  3. 添加一个总是把成功的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!\" }" 
  4. 添加一个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!\" }" 
  5. 您也可以在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 repo分支上构建状态

这意味着这是另一种方式,通过访问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这样做:

在github上设置构建状态

关于build立Jenkins和GitHub受保护的分支。 我正在使用Jenkins 2.6,这些是我做的工作步骤:

在您的存储库的GitHub网页上:

  1. 导航到设置>分支。
  2. 在“保护分支”下,单击“select分支”淹没菜单,然后select要设置为受保护分支的分支。
  3. 根据需要启用选项。

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

  1. 导航到pipe理Jenkins>configuration系统。
  2. 在GitHub下,将API URL设置为https://api.github.com 。 虽然这是默认值。
  3. 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/)