48

从现在大约 1 周开始,Bitbucket 不会(?)向我的 Jenkins 服务器发送请求。

我已经这样设置了:

Endpoint http://username:apitoken@jenkinshost/
username= Jenkins
apitoken中的用户名 = 连接到 Jenkins 中的用户名的 apitoken
jenkinshost= 我运行 Jenkins 的主机

Project name是一个项目
Token:我可以在每个项目配置中设置的令牌。

我根据这个网站做了这个:http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins
它确实有效,但现在不再有效。Bitbucket 是否改变了什么?我怎样才能解决这个问题?

在此处输入图像描述

4

6 回答 6

31

为了在新提交后构建您的仓库,请使用Bitbucket Plugin

只有一件事需要注意:当创建一个 POST Hook 时(注意它是 POST Hook,而不是 Jenkins Hook),当 URL 最后有一个“/”时,它是有效的。喜欢:

URL: JENKINS_URL/bitbucket-hook/
e.g. someAddress:8080/bitbucket-hook/

不要忘记在作业配置中选中“将更改推送到 Bitbucket 时构建”。

于 2015-04-08T22:34:24.980 回答
18

我有类似的问题,直到我得到它的工作。以下是集成的完整列表:

  1. 生成公钥/私钥对:ssh-keygen -t rsa
  2. 复制公钥 (~/.ssh/id_rsa.pub) 并将其粘贴到用户帐户管理控制台中的 Bitbucket SSH 密钥中: 在此处输入图像描述

  3. 使用私钥凭据将私钥(~/.ssh/id_rsa)复制到新用户(甚至现有用户),在这种情况下,用户名不会有任何影响,所以用户名可以是任何东西: 在此处输入图像描述

  4. 运行此命令以测试您是否可以访问 Bitbucket 帐户: ssh -T git@bitbucket.org

  5. 可选:现在,您可以使用 git 将 repo 复制到您的办公桌,而无需密码git clone git@bitbucket.org:username/repo_name.git
  6. 现在您可以为 Jenkins 推送通知和自动构建启用 Bitbucket 挂钩,您将分两步完成:

    1. 在您配置的作业/项目中添加一个身份验证令牌,它可以是任何东西: 在此处输入图像描述

    2. 在 Bitbucket hooks 中:选择 jenkins hooks,并填写如下字段: 在此处输入图像描述

在哪里:

**End point**: username:usertoken@jenkins_domain_or_ip
**Project name**: is the name of job you created on Jenkins
**Token**: Is the authorization token you added in the above steps in your Jenkins' job/project 

Recommendation: I usually add the usertoken as the authorization Token (in both Jenkins Auth Token job configuration and Bitbucket hooks), making them one variable to ease things on myself.
于 2015-01-07T07:48:10.227 回答
14

我只是能够通过以下步骤(类似于链接)使用 Bitbucket 中的 Hooks 选项成功触发构建到 Jenkins 实例:

  1. 生成自定义 UUID 或字符串序列,保存以备后用
  2. Jenkins -> 配置项目 -> 构建触发器 -> “触发器远程构建(例如,从脚本)”
  3. (在此处粘贴 UUID/字符串)用于“身份验证令牌”
  4. 节省
  5. 编辑 Bitbucket 存储库设置
  6. Hooks -> 编辑:端点: http: //jenkins.something.co :9009 / 模块名称:项目名称:项目名称令牌:(在此处粘贴 UUID/字符串)

尽管使用了身份验证,但端点不需要在 URL 中插入基本的 HTTP 身份验证,我没有使用模块名称字段,并且输入的项目名称区分大小写,包括我的测试用例中的空格。构建并不总是立即触发,但相对较快。您可能会考虑的另一件事是禁用“配置全局安全性”中的“防止跨站点请求伪造漏洞利用”选项进行测试,因为启用此选项后,我在现有集成中遇到了各种 API 困难。

于 2013-12-16T07:01:10.657 回答
4

通过迭代,我了解到 Token 字段和端点中的令牌可以相同。所以我将它们设置为与用户令牌相同,它可以工作!还要检查用户是否有权进行作业。

无论如何,您可以检查access.log并查看 Bitbucket 是否尝试。

詹金斯

PS 也是Bitbucket 文档的链接。也许有一天它会变得更有用。

于 2013-08-12T11:56:51.123 回答
1

我不熟悉这个插件,但我们非常成功地将 Bitbucket 和 Jenkins 一起使用,但是我们轮询更改而不是让它们从 BitBucket 推送(由于我们的构建服务器隐藏在公司防火墙后面)。如果您仍然对当前方法有疑问,此方法可能对您有用。

这篇关于在 Linux 上为 Git 和 Mercurial 设置 SSH 的文档详细介绍了如何通过 SSH 在构建服务器和 Bitbucket 之间进行通信。完成此操作后,安装Git 插件后,转到构建配置并选择源代码管理下的“Git”,然后输入存储库的 ssh URL 作为存储库 URL。最后,在 Build Triggers 部分中,选择 Poll SCM 并将轮询频率设置为您需要的任何值。

于 2013-06-28T08:12:54.350 回答
1

我遇到了这个问题,结果问题是我用 CamelCase 命名了我的存储库。Bitbucket 会自动将存储库的 URL 更改为全部小写,并在 webhook 中发送给 Jenkins。Jenkins 然后搜索具有匹配存储库的项目。如果您像我一样,在项目配置中的存储库 URL 中有 CamelCase,您将能够签出代码,但 webhook 请求上的模式匹配将失败。

只需将您的 repo URL 更改为全部小写而不是 CamelCase,模式匹配应该会找到您的项目。

于 2016-12-08T17:59:57.713 回答