在GitHub repo上显示Jenkins的当前状态

时间:2013-01-11 08:31:04

标签: github jenkins

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

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

仍然存在无意中犯下破坏构建的东西的风险。访问GitHub项目页面的用户知道当前主服务器处于该状态会很好。

13 个答案:

答案 0 :(得分:151)

好的,这里有关于如何设置Jenkins来设置GitHub构建状态的方法。这假设您已经让Jenkins使用GitHub插件配置为在每次推送时都进行构建。

  1. 转到GitHub,登录,转到设置个人访问令牌,点击生成新令牌

    screenshot of GitHub settings

  2. 检查 repo:status (我不确定这是否有必要,但我做到了,它对我有用)。

    screenshot of GitHub token generation

  3. 生成令牌,复制它。

  4. 确保您将要使用的GitHub用户是存储库协作者(用于私有存储库),或者是具有推送和拉取访问权限(用于组织存储库)到您想要的存储库的团队的成员建立。

  5. 转到Jenkins服务器,登录。

  6. 管理Jenkins 配置系统
  7. GitHub网络摘要下选择让Jenkins自动管理摘要网址,然后指定您的GitHub 用户名您在第3步中获得的OAuth令牌

    screenshot of Jenkins global settings

  8. 确认它适用于测试凭据按钮。 保存设置。

  9. 找到Jenkins作业并在GitHub提交上添加设置构建状态

    screenshot of Jenkins job configuration

  10. 那就是它。现在进行测试构建并转到GitHub存储库以查看它是否有效。单击主存储库页面中的分支以查看构建状态。

    sceenshot of the main page where you click on 'branches'

    您应该看到绿色复选标记:

    screenshot of GitHub branches with build status

答案 1 :(得分:35)

我所做的很简单:

  1. 安装Hudson Post Task Plugin
  2. 在此处创建个人访问令牌:https://github.com/settings/tokens
  3. 添加一个始终成功的帖子任务插件

    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. 添加一个帖子任务插件,如果“标记为构建失败”

    将导致失败
    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. 您还可以在测试开始时添加对待处理的调用

    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!\"
    }"
    
  6. Screenshot of the Post build task configuration

答案 2 :(得分:26)

与此同时,Jenkins和GitHub的用户界面发生了一些变化,花了我一段时间才弄清楚现在如何正确配置Jenkins。此处的说明基于Jenkins 2.121.1版。

我还假设您已经通过Webhook或轮询触发了Jenkins Job。 这些是我为使其正常运行所采取的步骤:

  1. 配置Github:使用OAuth范围repo:status
  2. 创建个人访问令牌
  3. 配置Jenkins:Configure System并将OAuth Secret添加为 GitHub服务器-使用Secret Text作为身份验证方法将OAuth Secret放入其中。
  4. 配置您的Jenkins作业:将Set GitHub commit status添加为构建后操作。将状态结果设置为One of the default messages and statuses
  5. 在GitHub上检查结果:检查是否在GitHub提交上获得了构建状态和构建执行期限。

配置Github

Create Personal Access Token


enter image description here


enter image description here


enter image description here


配置詹金斯

enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


配置詹金斯工作

enter image description here


enter image description here


enter image description here


结果

您现在将看到提交和分支的状态:

enter image description here

答案 3 :(得分:21)

此插件应该有效:https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

您应该可以将这样的徽章嵌入到README.md文件中:

build passing

答案 4 :(得分:11)

Commit Status API可让您看到“Repo Statuses API”。

自2013年4月26日起,您现在可以在build status上看到GitHub repo branch page

build status on GitHub repo branches

这意味着通过访问GitHub项目页面来查看这些状态而不是只有Jenkins是另一种方式。

从2013年4月30日开始,API endpoint for commit statuses已扩展为允许分支和标记名称,以及提交SHA

答案 5 :(得分:10)

此插件还会为您提供一个徽章网址,您可以在README.md中发布,看起来像这样

build passing

https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

答案 6 :(得分:7)

如果您在Github上安装了Jenkins插件,则可以在Post build actions中执行此操作:

set build status on github

答案 7 :(得分:3)

关于设置Jenkins和GitHub的受保护分支。我正在使用Jenkins 2.6,这些是我为使其工作所采取的步骤:

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

  1. 导航至设置>分行。
  2. 在“保护分支”下,单击 选择分支淹没菜单并选择所需的分支 设置为受保护的分支。
  3. 根据需要启用选项。
  4. 在Jenkins服务器上: (确保安装了Git和GitHub插件)

    1. 导航至Manage Jenkins>配置系统。
    2. 在GitHub下,将API网址设置为https://api.github.com。虽然这是默认值。
    3. 为凭据选择生成的令牌。如果您还没有生成令牌,请点击高级...然后在其他操作上,您可以将您的登录名和密码转换为令牌并将其用作您的凭据。
    4. 此外,请确保您的Jenkins正在使用的GitHub帐户是存储库的协作者。我已将其设置为写入权限级别。

      希望这有帮助。

答案 8 :(得分:3)

README.md 中添加以下行,并根据您的jenkins项目更改这两个网址。

[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)

答案 9 :(得分:1)

修改

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

更新:我最终做了什么,针对我们的具体情况: (以上答案非常棒 - 谢谢!)

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

  • 构建邮票的开始失败
  • 制作完成标记成功
  • 项目在主项目之后运行以发布结果 - >构建状态,API文档,测试报告和测试覆盖率。

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

将其放入包含构建状态图像的目录:

ExpiresByType image/png "access plus 2 minutes"

Here's构建脚本。发布到gh-pages的目标是 ' - publish.site.dry.run'

配置少于400行,我们有:

  • 编译检查
  • unit&集成测试
  • 测试报告
  • 代码覆盖率报告
  • API文档
  • 发布到Github

即可。 。并且此脚本可以在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为

https://github.creditcard.com/api/v3/

答案 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 存储库。

<块引用>

参考:https://stackoverflow.com/a/47162309/4261333