以下是该问题的一种声称的解决方案,尽管它似乎是一种解决方法,而不是一个明确的解决方案。有没有办法,通过job config或bitbucket hook config,我可以设置我的作业只有在推送特定分支时运行构建?
Is it possible to trigger Jenkins from one specific branch only?
发布该问题已经过去了大约一年,我希望有一些插件更新可以在没有上述链接所需的额外工作的情况下实现这一点,或者可能在那里&#39我总是一个简单的方式,我只是没有看到。
答案 0 :(得分:7)
正如 @Ryan Taylor 已经说过你可以使用Bitbucket-Plugin:
的https:// YOUR.JENKINS.SERVER:PORT /到位桶钩
通过这种方式,我有三个构建项目,一个用于所有功能,一个用于开发,一个用于发布分支。
最好的是,你不必为新的Jenkins项目添加新的钩子。
答案 1 :(得分:1)
上面提出的解决方案会比我自己更好,但我不认为Bitbucket插件允许分支特定的触发器。
来自Bitbucket插件文档,
在每次提交时,所有带有"构建的作业将更改推送到BitBucket"选项已启用。
这是一种霰弹枪方法,显然是浪费。
我通过将一个小型Web应用程序部署到托管我的jenkins实例的同一个应用程序服务器来解决了这个问题,该实例解析了bitbucket发送的json post内容并选择性地触发了分支特定的钩子。
代码干净且易于理解,并且很容易修改以满足您自己的需求;但值得注意的是,我没有着手为其他人创建通用解决方案。无论它作为起点对您有用。
答案 2 :(得分:0)
我之前没有使用BitBucket进行设置,但是我已经使用GitHub设置了相同的功能。
我使用通用Git Plugin使用ssh密钥将构建附加到我的git存储库。然后,当将更改推送到GitHub时,我选择"构建"我相信的选项是GitHub Plugin的一部分,它主要在Jenkins配置而不是项目配置中配置。 BitBucket插件应具有类似的功能/钩子。
答案 3 :(得分:0)
对于同样的情况,我在构建触发器中使用Poll SCM选项
我们需要将git区域中的ref作为+refs/heads/develop:refs/remotes/origin/develop
。
这里开发的是分支名称
并且每1分钟轮询SCM计划= */1 * * * *
只有在开发分支更改时才会触发
答案 4 :(得分:0)
您应该可以使用Generic Webhook Trigger Plugin。您可以使用"可选过滤器"功能只触发你想要的分支。
您需要摆弄JSONPath,这需要您了解使用Bitbucket的webhook发送的JSON结构。
看看this example与GitLab一起使用可能会有所帮助。