如何让Jenkins在推送到BitBucket git存储库的基础上构建?

All*_* T. 58 git bitbucket jenkins

我有一个托管在BitBucket上的git存储库,并在存储库和我的Jenkins服务器之间设置了SSH身份验证.我可以手动构建Jenkins,但无法在BitBucket上获取Jenkins服务来触发构建.

Jenkins configuration:  
- Project Name: [my_jenkins_job]  
- Build Triggers:  
--Trigger Builds Remotely:  
---Token: [token]

BitBucket configuration:  
- Endpoint: http://[my_jenkins_address]/job/[my_jenkins_job]/build (I've also tried build?token=[token])  
- Project Name: [my_jenkins_job]  
- Module Name: [blank]  
- Token: [token]
Run Code Online (Sandbox Code Playgroud)

访问http:// {my_jenkins_address}/ job/{my_jenkins_job}/ build?token ={token}正确启动构建.

为什么不将更改推送到BitBucket导致Jenkins启动构建?

sal*_*and 74

由于Bitbucket的Jenkins Hook对我来说根本不起作用,我为不同的分支机构提供了不同的Jenkins项目,我已经找到了这个解决方案:

  • 在你的Jenkins 安装Bitbucket插件
  • 将正常的Post作为Hook添加到您的Bitbucket存储库(设置 - >挂钩)并使用以下URL:

https:// YOUR.JENKINS.SERVER:PORT/bitbucket-hook /

如果你在jenkins上设置了身份验证,那么URL必须是这样的

https:// USERNAME:PASSWORD@YOUR.JENKINS.SERVER:PORT/bitbucket-hook /

  • 按如下方式配置Jenkins项目:
  • 构建触发器时,在将更改推送到BitBucket时启用构建
  • 源代码管理下选择GIT ; 输入您的凭据并定义要构建的分支(如**feature/*)

通过这种方式,我有三个构建项目,一个用于所有功能,一个用于开发,一个用于发布分支.确保在URL的末尾包含斜杠('/'),否则钩子将不起作用.

最好的是,您不必为新的Jenkins项目添加新的钩子.

  • `http://YOUR.JENKINS.SERVER:PORT/bitbucket-hook /` - 注意,没有尾随斜杠"/"不会触发构建. (8认同)
  • 这个答案优于接受的答案和推荐民意调查的答案. (5认同)
  • 当您能够在外部处理本地计算机表单时,它应该可以正常工作.否则你的jenkis地址不知道bitbucket. (4认同)
  • 如果我家里的机器上有本地詹金斯服务器,这也有效吗?或者我是否需要一个可从外部访问的公共詹金斯服务器? (2认同)
  • 这救了我:确保在 URL 末尾包含斜杠 ('/'),​​否则钩子将不起作用。 (2认同)

Jos*_*ant 35

我将Jenkins实例设置为每分钟轮询一次存储库.这不足以满足您的需求吗?

我们的Jenkins配置:

构建触发器>轮询SCM =已选中

构建触发器>轮询SCM> Schedule =

# every 1 minute
*/1 * * * *
Run Code Online (Sandbox Code Playgroud)

  • 对于新读者,您应该查看[这个答案而不是](http://stackoverflow.com/a/28250478/734790)并考虑挂钩推送.它减少了聊天和处理.[回答](http://stackoverflow.com/a/28250478/734790)中提到的Bitbucket插件似乎仍然是使用Bitbucket时的首选方法. (8认同)

Ian*_*ter 12

你实际上可以通过Bitbucket服务让它在Jenkins中运行,但它需要一些游戏才能让它运行起来.

如果使用身份验证,则可以从可以创建构建的其中一个用户获取API令牌.我为Bitbucket创建了一个单独的帐户.您至少需要Jenkins 1.426来使用API​​令牌.然后,您可以使用HTTP身份验证和API令牌作为Bitbucket服务的密码.

这就是我的设置方式:

端点: http:// [bitbucket]:[APITOKEN] @ [www.example.com/jenkins/]

项目名称: [NameOfMyJenkinsProject]

模块名称: [空]

令牌: [在Jenkins项目设置中找到的令牌]

在我这样设置后,我能够使用令牌和身份验证来启用Bitbucket的推送触发构建.


flo*_*mas 11

如果您在Jenkins中使用身份验证,则令牌内容无用.

使用Git插件,并在其中使用POST钩子http[s]://your.site.com[/jenkins]/git/notifyCommit?url=git@bitbucket.org:your-username/your-repo.git.确保轮询已开启并安排在某个值,否则这将无效.


Abh*_*ble 6

使用Poll SCM很好,但是它也有一些缺点,它会从你的GIT Repository中获取元数据,无论如何它都使用你的bitbucket服务器和Jenkins服务器的一定比例的带宽.

如果有任何新的更新到达,Bitbucket知道何时触发Jenkins更好.如果您使用bitbucket最新版本,则有一个插件名称"Stash webhooks for Jenkins",它现在与Bitbucket兼容.

在这个插件中,你只需要指定Jenkins URL和JOB名称,这也在Jenkins和Bitbucket之间提供了额外的安全层. 在此输入图像描述

这是插件(Jenkins的Stash webhooks,不称为Jenkins的Bitbucket webhooks),可以从Atlassian Marketplace下载.

在此输入图像描述 以上是加载项设置,您必须指定Jenkins URL和Repo Clone URL.使用触发器,您还可以检查连接等.

该插件的链接:Jenkins的Bitbucket webhooks

这个插件的工作原理:

  1. 在Jenkins中安装Git插件.配置项目以使用Git进行源代码管理.您需要保留用于Stash中配置的存储库URL.在"构建触发器"中启用"轮询SCM"选项.这是远程触发构建所必需的.由于我们实际上不需要轮询,因此您可以将轮询频率设置为非常不经常轮询.保存项目配置.
  2. 输入Jenkins实例的URL以及您配置Jenkins要使用的存储库URL.您可以使用下拉列表获取每个支持的协议的克隆URL.之后,随意更改它以匹配您的Jenkins实例.
  3. 而已!

现在配置了Jenkins和Stash,如果您提交代码,将自动发生构建触发器.接收后挂钩会向Jenkins发出一个GET请求,然后告诉它轮询存储库(为什么需要打开轮询).轮询检查是否确实存在任何更改.既然有,它会触发构建!


小智 5

只需安装 bitbucket 插件并按照插件页面上的说明进行操作即可:

使用 URL JENKINS_URL/bitbucket-hook(无需凭据)使用 POST 挂钩配置 BitBucket 存储库。每次提交时,将触发启用“将更改推送到 BitBucket 时构建”选项的所有作业。

请参阅此处: https: //wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin