【问题标题】:How to connect Bitbucket to Jenkins properly如何正确将 Bitbucket 连接到 Jenkins
【发布时间】:2013-05-12 13:31:01
【问题描述】:

大约 1 周后,Bitbucket 不再(?)向我的 Jenkins 服务器发送请求。

我是这样设置的:

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

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

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

【问题讨论】:

  • @andrewdotnich 关于一切可能。最后,我按照 robjohncox 所说的(如下)完成了它,并检查了差异。它有效,但我不喜欢投票部分。我只想在提交时立即重建...
  • 您能否添加更多关于它如何不起作用的详细信息?您收到了哪些错误消息(如果有的话?) Jenkins 日志中有什么内容吗?
  • 它起作用了,从某个时间开始它就不再起作用了。我没有收到错误消息,因为此请求应该发生在 Bitbucket 主机, 我的服务器。 [讽刺] 不幸的是,我没有对 Bitbucket 应用程序的 root 访问权限 [/sarcasm]。我可能会误解您的问题,如果是这样,请赐教:) 另外:当我尝试自己执行请求时,通过将 Web 浏览器指向我的端点,它确实有效。这意味着在我的理解中,Bitbucket 做错了什么,或者什么也没做。
  • 您可以尝试使用 Bitbucket OAuth 插件来连接 Bitbucket 和 Jenkins。你可以找到步骤here
  • 这与从远程存储库(Bitbucket)拉取有什么关系吗?

标签: git jenkins continuous-integration bitbucket


【解决方案1】:

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

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

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

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

【讨论】:

  • 尾随的“/”是它为我工作的原因。呸!谢谢!
  • 对我来说这是行不通的 - 我在这里收到 403 错误。 ://
  • @mark 也许这个链接可以帮助? stackoverflow.com/questions/7427557/…
  • 是的,看来Bitbucket中的Webhooks功能与Jenkins插件完美配合,只需要在最后加上斜杠即可。在将 Jenkins 与基于 Google 的身份验证 (OAUTH) 一起使用时进行了测试。谢谢!
  • 缺少“/”是确切的问题。谢谢。
【解决方案2】:

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

  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 钩子中:选择 jenkins 钩子,并填写如下字段:

地点:

**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.

【讨论】:

  • 由于某种原因,jenkins 无法连接到 repo(权限被拒绝),但是如果我尝试从 jenkins 盒子 ssh 到 bitbuck,bitbucket 就可以了:(
【解决方案3】:

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

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

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

【讨论】:

  • 太棒了!我已经看到 BitBucket 调用他们的“服务”的方式发生了变化。确实是重命名为钩子。所以也许他们一直在解决这个问题。我会看看,如果它有效,我会接受你的回答:)
【解决方案4】:

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

不管怎样,你可以查看access.log,看看Bitbucket有没有尝试。

附:还有指向Bitbucket Documentation 的链接。愿有一天它会变得更有用。

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

    • 是的,我知道这个解决方案,但我明确地在寻找设置这个插件。
    【解决方案6】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多