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

Jas*_*ues 166 github jenkins

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

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

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

Mar*_*nas 159

好的,这里是你如何设置Jenkins来设置GitHub构建状态.这假设你已经让Jenkins使用GitHub插件配置为在每次推送时进行构建.

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

    GitHub设置的屏幕截图

  2. 检查回购:状态(我不确定这是否必要,但我做到了,它对我有用).

    GitHub令牌生成的屏幕截图

  3. 生成令牌,复制它.

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

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

  6. 管理Jenkins配置系统
  7. GitHub Web Hook下,选择让Jenkins自动管理挂钩URL,然后指定您在步骤3中获得的GitHub 用户名OAuth令牌.

    Jenkins全局设置的屏幕截图

  8. 验证它是否适用于Test Credential按钮. 保存设置.

  9. 找到Jenkins作业并在GitHub上添加Set build status提交到构建后的步骤

    Jenkins作业配置的屏幕截图

而已.现在进行测试构建并转到GitHub存储库以查看它是否有效.单击主存储库页面中的Branches以查看构建状态.

点击'branches'的主页面的sceenshot

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

GitHub的屏幕截图分析了构建状态

  • 这似乎不适用于Jenkins> 1.609和Github插件v 1.13.3 - 我找不到选项"让Jenkins自动管理挂钩URL" (4认同)
  • 这似乎已经过时了; 这个答案提到的后构建操作现在被标记为已弃用,并且还有第二个 (4认同)
  • 现在后期构建步骤参数已更改。@Alex 有正确答案。 (3认同)
  • 我赞同@pyeleven.我正在使用Jenkins LTS 1.625.3和Github Plugin 1.16.0以及Github API插件1.71.此选项不会显示.相反,我看到凭据下拉列表,但没有列出凭据(即使我已设置凭据).进入高级 - >管理其他Github操作 - >将登录和密码转换为Github令牌时,会显示这些凭据. (2认同)
  • 如果您使用最新的 Jenkins Blue Ocean 插件和 GitHub 来创建多分支管道,只要您使用本答案中描述的必要权限正确设置令牌,它就会自动为您执行此操作。 (2认同)

Ale*_*lex 40

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

我还假设您已经配置了由webhook或轮询触发的Jenkins作业.这些是我为实现它而采取的步骤:

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

配置Github

创建个人访问令牌


在此输入图像描述


在此输入图像描述


在此输入图像描述


配置Jenkins

在此输入图像描述


在此输入图像描述


在此输入图像描述


在此输入图像描述


在此输入图像描述


配置Jenkins Job

在此输入图像描述


在此输入图像描述


在此输入图像描述


结果

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

在此输入图像描述

  • 更新:最终我发现这只有在由实际的 git 推送触发时才有效。自己运行构建不会正确触发状态更新。 (4认同)
  • 哇终于找到了解决方案,非常感谢!那个"秘密文本"让我感到困惑. (2认同)
  • 更新:我的问题与我的存储库的隐私有关。我的凭据设置肯定有问题。 (2认同)
  • `Manage Hooks` 框在上图中突出显示但没有打勾,这是否意味着我们保存时应该取消勾选? (2认同)
  • 非常有用的屏幕截图等等,但这对我不起作用。问题是我生成的个人访问令牌的范围 - 它需要“完全控制私有存储库”访问权限,而不仅仅是“repo:status”。希望这对某人有帮助! (2认同)

Nat*_*tim 36

我做的很简单:

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

    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!\"
    }"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 添加一个Post Task插件,如果"标记为构建失败"将导致失败

    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!\"
    }"
    
    Run Code Online (Sandbox Code Playgroud)
  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!\"
    }"
    
    Run Code Online (Sandbox Code Playgroud)

Post构建任务配置的屏幕截图


Kor*_*tor 23

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

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

建立传球

  • 可悲的是,似乎GitHub开始在某些图像托管服务上缓存这些图像,现在它们显示不正确. (6认同)

Von*_*onC 11

提交状态API可以让你看到了" 回购以下状态API ".

自2013年4月26日起,您现在可以在GitHub repo分支页面上看到构建状态:

在GitHub repo分支上构建状态

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

从2013年4月30日开始,提交状态API端点已扩展为允许分支和标记名称,以及提交SHA.


mho*_*815 11

还有这个插件会给你一个徽章网址,你可以在README.md中发布,看起来像这样

建立传球

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


Rém*_*rin 7

如果你有Github插件安装Jenkins,你可以这样做Post build actions:

在github上设置构建状态

  • [这似乎无声地失败.](https://issues.jenkins-ci.org/browse/JENKINS-19775) (13认同)
  • 这个答案缺乏细节:如何在GitHub上创建OAuth访问令牌,让GitHub插件使用设置构建状态所需的API?此令牌需要什么权限?在Jenkins配置中我可以指定用户名/令牌吗? (4认同)
  • 这真的没有帮助,你如何进入这个对话窗口? (2认同)

Kau*_*hal 5

README.md 中添加以下行并根据 jenkins 项目更改两个 URL。

[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
Run Code Online (Sandbox Code Playgroud)