如何从bitbucket存储库触发jenkins管道

问题描述 投票:25回答:7

我已成功在bitbucket中为Jenkins自由式项目设置了一个webhook触发器,用于测试目的。

不幸的是我的Jenkins项目使用的是Pipeline格式,我无法让Bitbucket触发那种项目;问题似乎是没有Jenkins项目注册从Bitbucket webhook来自的回购中提取,Jenkins回复:

Error: Jenkins response: No git jobs using repository: ssh://git@myhost:7999/xxx/testing-jenkins.git and branches: master No Git consumers using SCM API plugin for: ssh://git@myhost:7999/xxx/testing-jenkins.git

通过使用“来自SCM的管道脚本”选项,管道项目的设置方式是在给定的存储库(Jenkinsfile)中找到ssh://git@myhost:7999/xxx/testing-jenkins.git

因此,管道实际上有一种“git consumer”,但Jenkins似乎没有考虑到这一点,可能是因为这不是一个真正的项目源,而是一个管道源。

是否有任何Bitbucket和Jenkins Pipeline项目集成的例子?我一直找不到。

jenkins bitbucket
7个回答
15
投票

如果您正在寻找完整的Bitbucket和Jenkins Pipeline,我强烈建议您使用Bitbucket Branch Source Plugin。该插件将发现所有分支和Pull请求,并构建所有在repo根目录中拥有JenkinsFile的人。

您还可以使用创建项目作为Bitbucket团队,他将扫描您组织的所有回购:enter image description here

请参阅CloudBees的官方doc


8
投票

我正在努力解决同样的问题。以下是我遵循的要点。

在詹金斯的管道工作中,

  1. 在“构建触发器”下,选中“远程触发构建(例如,从脚本中)”,并使用一些随机且唯一的令牌填写“身份验证令牌”。

在BitBucket存储库中,

  1. 转到设置>服务
  2. 从下拉列表中选择“Jenkins”和“添加服务”。 检查'Csrf已启用' 终点:http://username:[email protected]/ 你可以在Jenkins home找到用户名和apitoken>人选择用户并点击configure。在“API令牌”下单击“显示API令牌”按钮,您会看到用户名和apitoken 模块名称:这是可选的。它可以是要观看的任何特定文件或文件夹。 项目名称:Jenkins中的项目名称。 如果作业是在某个文件夹结构中,比如我有'MyTestFolder / MyTestPipelineJob',则要提到的项目名称是'MyTestFolder / job / MyTestPipelineJob' 令牌:在Jenkins工作中创建的“身份验证令牌”。

你准备好了!!

我提到了http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins/和我的一些直觉。 :)


3
投票

我有同样的问题。我的解决方法只是创建一个可以由WebHook触发的自由式项目,并让该项目的完成触发管道。

与此同时,这里是您可以观看修复的Jenkins错误:https://issues.jenkins-ci.org/browse/JENKINS-38447


1
投票

在2017年花几个小时搞清楚如何做到这一点

  1. 就像@JPLemelin所描述的那样,使用Bitbucket团队/项目新建一个Jenkins项目
  2. 参考doc:https://support.cloudbees.com/hc/en-us/articles/115000051132-How-to-Trigger-Multibranch-Jobs-from-BitBucket-Cloud-,安装插件:BitBucket Branch Source插件。
  3. 去bitbucket,并添加webhook:$ {your-jenkins-url} / bitbucket-scmsource-hook / notify

在这3个步骤之后,我终于在新提交到bitbucket之后运行管道作业


1
投票

我有同样的问题......

原因是使用*/master作为分支说明符。我需要拼出来:origin/master(没有通配符)。

它现在运作良好。


0
投票

我终于能够在Multi Branch Pipeline中使用Jenkinsfile了:

在Bitbucket我用我的Jenkins-URL,我的clone-URL创建了一个webhook,在webhook中我放了以下的URL(确切地说是Jenkins项目中的url):

http://<jenkins>/git/notifyCommit?url=http://<user>@<bitbucket>/scm/<project>/<repo>.git

当我测试触发器时,结果如下:

No git jobs using repository: http://<user>@<bitbucket>/scm/<project>/<repo>.git and branches: 
Scheduled indexing of <repo>

所以它没有触发任何作业,但它触发了多分支扫描,因此我的更改分支是构建的。


0
投票

一个简单的解决方案是在Jenkins中使用Generic Webhook Trigger Plugin

你需要

  • 在自由样式或管道作业中启用它。
  • 配置令牌字符串
  • 构建JSONPath:s以从Bitbucket Webhook中收集您需要的任何内容。
  • 在Bitbucket中添加插件端点。 JENKINS_URL/generic-webhook-trigger/invoke?token=whatever_you_picked

该插件在调用时会给您明确的反馈,以便轻松进行故障排除。

您可以从webhook中选择所需的任何值,以便克隆正确的存储库或调用它时要执行的任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.