以下是使用Jenkins Pipeline所需要满足的要求,并且我是Jenkins Pipeline的新手。 br />为了批准请求请求,我们至少需要一个成功的
Jenkins构建。因此,我们只想获取为请求请求检入的代码的生成结果。
创建/更新请求请求时,将自动触发Jenkins,以实现真正的持续集成。
应将构建结果报告回Bitbucket。

在适用于Normal Freestyle Project的上述过程中使用了Stash Pull Request Builder和stash Notifier。使用Jenkins管道具有类似的功能,因此创建了如下的jenkins作业。

检出PR分支并触发构建的管道脚本如下所示当我创建/更新PR时,我已经完成了上述配置,在jenkins中不会自动触发该构建。我猜没有发生从存储到詹金斯的通知,因为我们在自由样式项目中指定了"origin/${pullRequestId}/from"。但是我没有在管道作业中指定该选项。
尝试了以下几种替代方法。
我尝试使用“轮询SCM”项目而不是隐藏拉取请求生成器,并指定cron作业触发为"H/2 * * * *" 。提交后,作业会在詹金斯触发。这意味着詹金斯的每次提交都会触发工作。但是Jenkins应该在创建/更新PR时触发工作。
我在这里肯定缺少一些可能是jenkins管道的基础知识和新知识。 br />

评论

根据调查结果编辑了问题

首先,您是否将Bitbucket IP列入白名单?另外,您能否检查bitbucket webhooks并让我们知道它们是否按预期工作。

您好,@Munai Das Udasin,感谢您的答复。以下是我的观察,在内部网络中工作时,bitbucket ips是列入白名单的IP之一。所以那不是问题。此外,我们对Webhooks的分析具有较少的弊端a)更新PR时,不会在jenkins上触发作业b)当PR下降时,即会触发作业,因为我们不希望按照用例进行操作。

#1 楼

要扩展上述答案-请尝试使用:

branch: "origin/pr/${pullRequestId}/from"


由于常规,对简单字符串-即单引号内的字符串不进行字符串插值。有关详细信息,请参见http://groovy-lang.org/syntax.html#_string_interpolation。

评论


仅供参考,上面没有答案,StackExchange网站不是论坛,答案的顺序也不总是按时间排列的,当引用另一个答案时,请链接到该答案,否则可能很难知道您稍后要引用哪个答案。

–滕西拜
17年12月1日在19:25

#2 楼

在groovy脚本中,您需要以不同于bash中的方式引用环境变量。

所以这行可能引起麻烦:
>尝试使用:

branch: ('origin/pr/${pullRequestId}/from')


#3 楼

是相同的问题,为了达到预期的结果,我创建了两个作业:PR触发器(自由式项目)和PR生成器(管道)。

要添加到PR触发器,我添加了Git插件,Stash Pull Request Builder插件(相同的配置不适用于管道)和参数化触发器插件(将拉取请求ID传递给PR Builder管道;将项目传递给Build-PR Builder)。



PR Builder我添加了参数化构建插件。