我正在尝试设置 Jenkins PR builder plugin 以在新的请求请求上击github。我一直遵循文档,并尝试了“许多”不同的配置,但是我似乎无法克服这一点:
“忽略refs/heads/jenkins_testing,因为它与任何已配置的refspecs 不匹配”
如果我将分支说明符留空,则PR上的“any”更改会触发构建。由此,我知道
引用规范:
我仅对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构建器配置:
轮询结果持续存在:
我知道正是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分支,您需要做一些额外的事情。
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/