如何正确地将Bitbucket连接到Jenkins

时间:2013-05-12 13:31:02

标签: git jenkins continuous-integration bitbucket

现在大约1周后,Bitbucket没有(?)向我的Jenkins服务器发送请求。

我把这一切都设置得像这样:

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

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

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

enter image description here

6 个答案:

答案 0 :(得分:31)

为了在新提交后构建您的回购,请使用BitBucket Plugin

有一点需要注意: 在创建POST Hook时(注意它是POST钩子,而不是Jenkins钩子),URL在最后有一个“/”时工作。像:

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

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

答案 1 :(得分:18)

我有类似的问题,直到我开始工作。以下是整合的完整列表:

  1. 生成公钥/私钥对:ssh-keygen -t rsa
  2. 复制公钥(〜/ .ssh / id_rsa.pub)并将其粘贴到用户帐户管理控制台中的Bitbucket SSH密钥中: enter image description here

  3. 使用私钥凭据将私钥(〜/ .ssh / id_rsa)复制到新用户(甚至现有用户),在这种情况下,用户名不会产生影响,因此用户名可以是任何内容: enter image description here

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

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

    1. 在您配置的作业/项目中添加身份验证令牌,它可以是任何内容: enter image description here

    2. 在Bitbucket钩子中:选择jenkins钩子,并填写如下字段: enter image description here

  7. 其中:

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

答案 2 :(得分:14)

我只是能够使用BitBucket中的Hooks选项成功触发构建,并使用以下步骤(类似于链接)对Jenkins实例执行:

  1. 生成自定义UUID或字符串序列,稍后保存
  2. Jenkins - >配置项目 - >构建触发器 - > “触发器远程构建(例如,从脚本)”
  3. (在此处粘贴UUID / string)用于“身份验证令牌”
  4. 保存
  5. 编辑bitbucket存储库设置
  6. 钩子 - >编辑: 端点:http://jenkins.something.co:9009/ 模块名称: 项目名称:项目名称 令牌:(在此粘贴UUID /字符串)
  7. 尽管使用了身份验证,端点也不需要在URL中插入基本的HTTP身份验证,我没有使用模块名称字段,并且项目名称输入区分大小写,包括我的测试用例中的空格。构建并不总是立即触发,而是相对较快。您可以考虑的另一件事是禁用“配置全局安全性”中的“防止跨站点请求伪造攻击”选项进行测试,因为我在启用此选项时遇到了来自现有集成的各种API难题。

答案 3 :(得分:4)

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

无论如何,您可以查看 access.log ,看看BitBucket是否尝试过。

jenkins

P.S。也是指向Bitbucket Documentation的链接。有一天它会变得更有用。

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

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

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