我尝试设置 Jenkins PR builder plugin 以在新的拉取请求中点击github。我跟着这些文档,并尝试了很多"很多"不同的配置,但我似乎无法解决这个问题:
" 忽略refs / heads / jenkins_testing,因为它不匹配任何已配置的refspec "
如果我将分支说明符留空,"任何"更改PR 确实触发构建。从此,我知道
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 builder config :
投票结果仍然存在:
我知道这个bug导致了这个问题,但在从1.31更新到1.33后,问题仍然存在。
我已经阅读了关于运行两个流程的内容,但我不确定为什么我需要这个(请解释一下,如果有的话)。
你可以在我的配置中看到任何错误吗?任何澄清或建议都是最受欢迎的。
干杯 -
答案 0 :(得分:8)
根据+refs/pull/*:refs/remotes/origin/pr/*
的refspec,您希望此项目仅构建拉取请求 。
但是,您似乎已启用Poll SCM触发器以及Github Pull Request Builder(GHPRB)触发器。
请记住,GHPRB插件已经一个触发器。启用其他触发器的唯一原因是,如果您希望此项目也构建正常分支。 如果是这种情况,请参阅本文的底部,了解有关此用例的更多信息。
所以第一步是确保启用的唯一触发器是GHPRB插件。
下一步是要认识到您没有使用Github webhooks - 可能是由于防火墙限制。这意味着您正在使用一个cronjob,它将使用Github API检查Pull Request更新,并将其与上次轮询进行比较以检测更改。
这意味着您的凭据必须正确,首先。您可以在GHPRB插件部分下检查Jenkins的系统设置部分(您必须是管理员)中的凭据。确保凭据具有查看,评论等所需的所有权限。
如果所有这些都是正确的,日志可能会为您提供更多信息。如果您是管理员,则可以转到管理Jenkins并查找系统日志。通过查看日志,您可能会发现与您的问题相关的错误。
在你的情况下,因为我是你的系统管理员并为了第三方的利益而输入所有这些,我注意到我们在尝试时从GitHub插件中看到了FileNotFound异常访问API。
原因?
GHPRB插件使用Github插件与API通信,因此轮询Pull请求。 Github插件的Project url
字段用于生成轮询请求的API URL。
删除网址的.git
部分!即使在浏览器中转到网址时它能够完美找到,但如果您将.git
后缀添加到API中的项目名称会生气,并会给你一个404
。通过从Project url
字段中删除此后缀,GitHub插件将解析API请求的正确URL路径,并且生活是美好的。
构建PR和正常分支
为了对Pull请求和普通分支使用单个Jenkins项目,您需要做一些额外的事情。
refspec
配置,不仅包括您当前配置的pull request refspec,还包括您希望构建的分支的refspec。例如,如果您希望所有标记和分支都可用于构建,则可以使用+refs/pull/*:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/*
${sha1}
用于构建PR和,除非GHPRB插件触发构建,否则不会创建此环境变量,您需要将此项目转换为如果您没有使用GHPRB插件,则参数化构建并创建一个名为sha1
的参数,其默认值等于您通常在Branch Specifier下放置的分支,然后确保分支Specifier字段引用${sha1}
变量。如果GHPRB插件用于触发构建,则GHPRB插件将覆盖此参数,否则默认值将用于其他触发器。这也使您有机会通过在构建时从UI(或脚本)指定参数来手动运行构建。您可能需要进行一些其他调整,但这些是我们立刻想到的主要内容。