我正在尝试设置 Jenkins PR builder plugin 以在新的请求请求上击github。我一直遵循文档,并尝试了“许多”不同的配置,但是我似乎无法克服这一点:

忽略refs/heads/jenkins_testing,因为它与任何已配置的refspecs 不匹配”

如果我将分支说明符留空,则PR上的“any”更改会触发构建。由此,我知道

  • 可以找到github仓库
  • 凭据很好
  • 我正在轮询,而不是使用钩子(Hook),并且正在工作
  • refspec至少与适当的
  • “接近”
  • 通知显示在松弛的


  • 引用规范:
    我仅对PR使用规定的设置-
    +refs/pull/*:refs/remotes/origin/pr/*
    

    分支
    我尝试了许多设置
    ${sha1}                  - ignored
    ${ghprbActualCommit}     - ignored
    branch-id                - gets built, but I need "any" PR
    ** (blank)               - too much gets built, undesirable
    

    Jenkins/PR构建器配置:

    github - Jenkins Pull Request构建器忽略带有$ {sha1}的分支-LMLPHP

    轮询结果持续存在:

    github - Jenkins Pull Request构建器忽略带有$ {sha1}的分支-LMLPHP

    我知道正是bug导致了此问题,但是从1.31更新到1.33后,问题仍然存在。

    我已经阅读了有关运行两个进程的信息,但是我不确定为什么会需要它(请解释一下,如果有的话)。

    可以在我的配置中看到任何错误吗?任何澄清或建议将是最欢迎的。

    干杯-

    最佳答案

    根据+refs/pull/*:refs/remotes/origin/pr/*的引用说明,您希望此项目构建拉取请求

    但是,似乎您已启用Poll SCM触发器以及Github拉取请求生成器(GHPRB)触发器。

    请记住,GHHPB插件已经是触发器。启用其他触发器的唯一原因是,如果您想让此项目以及建立常规分支。如果是这种情况,请参见此文章的底部以获取有关此用例的更多信息。

    因此,第一步是确保启用的唯一触发器是GHPRB插件。

    下一步是认识到您未使用Github Webhooks-可能是由于防火墙限制。这意味着您正在使用cronjob,它将使用Github API检查Pull Request更新,并将其与上次轮询进行比较以检测更改。

    这首先意味着您的凭据必须正确。您可以在GHPRB插件部分下的Jenkins的“系统设置”部分中检查凭据(您必须是管理员)。确保凭据具有查看,注释等信息库所需的所有权限。

    如果所有这些都正确,则日志可能会为您提供更多信息。如果您是管理员,则可以转到Manage Jenkins并找到系统日志。通过查看日志,您可能会发现与问题相关的错误。

    在您的情况下,由于我是您的系统管理员,并且正在键入所有这些信息,这是为了让第3方参加,因此我注意到,当我们尝试访问API时,我们看到GitHub插件抛出了FileNotFound异常。

    原因呢?

    GHPRB插件使用Github插件与API通信,从而轮询请求请求。 Github插件的Project url字段用于生成轮询请求的API URL。

    删除URL的.git部分! 即使在浏览器中找到URL时,它可以完美地工作,但如果在API中将.git后缀添加到项目名称中,它也会很生气,并会给您404。通过从Project url字段中删除此后缀,GitHub插件将为API请求解析正确的URL路径,并且生活很顺利。

    建筑公共(public)关系和普通分支

    为了将单个Jenkins项目用于Pull Request和Normal分支,您需要做一些额外的事情。

  • 为其他分支(如GitHub Hook 或SCM轮询
  • )启用触发器
  • 更新refspec配置,不仅包括您当前配置的拉取请求refspec,还包括您希望构建的分支的refspec。例如,如果您希望所有标记和分支都可用于构建,则可以使用+refs/pull/*:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/*
  • 因为通常将分支说明符设置为${sha1}来构建PR,并且除非创建是由GHPRB插件触发的,否则不会创建此环境变量,因此您需要将此项目转换为Parametarized Build并创建一个名为sha1的参数,并使用默认值等于您不使用GHPRB插件时通常放在“分支指定符”下的分支,然后确保“分支指定符”字段引用了${sha1}变量。如果GHPRB插件用于触发构建,则它将覆盖此参数,否则默认值将用于其他触发器。通过在构建时从UI(或脚本)中指定参数,这也使您有机会手动运行构建。

  • 您可能还需要进行其他一些调整,但是这些是立即想到的主要调整。

    关于github - Jenkins Pull Request构建器忽略带有$ {sha1}的分支,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39297278/

    10-11 22:10
    查看更多