如何从bitbucket存储库

时间:2016-09-29 11:23:35

标签: jenkins bitbucket

我已成功在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

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

因此实际上是一种" git的消费者"对于管道,但Jenkins似乎没有考虑到这一点,可能是因为这不是真正的项目源,而是管道源。

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

7 个答案:

答案 0 :(得分:15)

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

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

请参阅CloudBees的官方doc

答案 1 :(得分:8)

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

在Jenkins管道工作中,

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

    1. 转到设置>服务

    2. 从下拉列表中选择“Jenkins”并添加“添加服务”。

      • 选中'Csrf Enabled'

      • 终点http://username:apitoken@yourjenkinsurl.com/

        你可以在Jenkins home找到用户名和apitoken>人 选择用户并单击configure。在“API令牌”下点击“显示API令牌”按钮,您会看到用户名和apitoken

      • 模块名称:这是可选的。它可以是要观看的任何特定文件或文件夹。

      • 项目名称:Jenkins中的项目名称。

        如果作业属于某种文件夹结构,比如说我有'MyTestFolder / MyTestPipelineJob',那么要提到的项目名称是'MyTestFolder / job / MyTestPipelineJob'

      • 令牌:在Jenkins工作中创建的“身份验证令牌”。

    3. 你准备好了!!

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

答案 2 :(得分:3)

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

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

答案 3 :(得分: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
  4. 在这3个步骤之后,我最终在新提交到bitbucket

    之后运行管道作业

答案 4 :(得分:1)

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

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

现在效果很好。

答案 5 :(得分:0)

我终于能够在Multi Branch Pipeline中使用Jenkinsfile进行这项工作:

在Bitbucket中,我使用Jenkins-URL,克隆URL创建了一个Webhook,然后在Webhook中放置了以下URL(确切的URL在Jenkins项目中):

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>

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

答案 6 :(得分:0)

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

您需要

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

该插件在调用时将为您提供清晰的反馈,从而简化故障排除过程。

由您决定从webhook中选择所需的任何值以克隆正确的存储库,或者在调用存储库时想要执行的操作。