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

时间:2012-06-27 16:36:42

标签: git jenkins bitbucket

我在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]

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

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

7 个答案:

答案 0 :(得分:69)

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

  • 在Jenkins安装Bitbucket Plugin
  • 将正常的帖子作为Hook添加到您的Bitbucket存储库(设置 - > Hooks )并使用以下网址:
  

的https:// YOUR.JENKINS.SERVER:PORT /到位桶挂机/

如果您在jenkins上设置了身份验证,则URL必须类似于

  

的https:// USERNAME:PASSWORD@YOUR.JENKINS.SERVER:PORT /到位桶挂机/

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

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

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

答案 1 :(得分:32)

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

我们的Jenkins配置:

构建触发器>轮询SCM =已检查

构建触发器>民意调查SCM> Schedule =

# every 1 minute
*/1 * * * *

答案 2 :(得分:12)

你实际上可以通过Bitbucket服务在Jenkins中使用它,但它需要一些游戏才能让它工作。

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

这就是我的设置方式:

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

项目名称: [NameOfMyJenkinsProject]

模块名称: [空]

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

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

答案 3 :(得分:11)

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

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

答案 4 :(得分:6)

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

如果任何新的更新到来,Bitbucket知道何时触发Jenkins会更好。如果你使用的是bitbucket最新版本,那么有一个插件名称" Stash用于Jenkins的webhooks"现在与Bitbucket兼容。

在这个插件中,你只需要指定Jenkins URL和JOB名称,这也在Jenkins和Bitbucket之间提供了额外的安全层。 enter image description here

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

enter image description here 以上是加载项设置,您必须指定Jenkins URL和Repo Clone URL。使用触发器,您还可以检查连接等。

插件的链接:Bitbucket webhooks for Jenkins

此插件的工作原理:

  1. 在Jenkins中安装Git插件。配置项目以使用Git进行源代码管理。您需要保留用于Stash中配置的存储库URL。在“构建触发器”中启用“轮询SCM”选项。这是远程触发构建所必需的。由于我们实际上不需要轮询,因此您可以将轮询频率设置为非常不经常轮询。保存项目配置。
  2. 输入Jenkins实例的URL以及您配置Jenkins要使用的存储库URL。您可以使用下拉列表获取每个支持的协议的克隆URL。之后,随意更改它以匹配您的Jenkins实例。
  3. 就是这样!
  4. 现在配置了Jenkins和Stash,如果你提交代码,a 构建触发器将自动发生。会发生什么事 post-receive hook向Jenkins发出GET请求,然后告诉Jenkins 它来轮询存储库(为什么你需要打开轮询)。 轮询检查是否确实存在任何更改。以来 有,它触发了构建!

答案 5 :(得分:4)

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

  

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

见这里:https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin

答案 6 :(得分:0)

我一直在为此问题苦苦挣扎,并且在Jenkins文档中找不到解决方案,我在Cloudbees支持站点找到了here解决方案。

您只需要将这两个webhooks添加到您的Bitbucket存储库中,就可以很好地工作:

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

我为所有管道甚至多分支管道工作。

希望这对某人有所帮助;)

ADA