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 />
#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我添加了参数化构建插件。
评论
根据调查结果编辑了问题首先,您是否将Bitbucket IP列入白名单?另外,您能否检查bitbucket webhooks并让我们知道它们是否按预期工作。
您好,@Munai Das Udasin,感谢您的答复。以下是我的观察,在内部网络中工作时,bitbucket ips是列入白名单的IP之一。所以那不是问题。此外,我们对Webhooks的分析具有较少的弊端a)更新PR时,不会在jenkins上触发作业b)当PR下降时,即会触发作业,因为我们不希望按照用例进行操作。