我在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启动构建?
答案 0 :(得分:69)
由于Bitbucket的Jenkins Hook对我来说根本不起作用,我在不同的分支机构有不同的Jenkins项目,我已经找到了这个解决方案:
的https:// YOUR.JENKINS.SERVER:PORT /到位桶挂机/
如果您在jenkins上设置了身份验证,则URL必须类似于
的https:// USERNAME:PASSWORD@YOUR.JENKINS.SERVER:PORT /到位桶挂机/
通过这种方式,我有三个构建项目,一个用于所有功能,一个用于开发,一个用于发布分支。确保在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之间提供了额外的安全层。
这是插件(Jenkins的Stash webhooks,不称为Jenkins的Bitbucket webhooks),可以从Atlassian Marketplace下载。
以上是加载项设置,您必须指定Jenkins URL和Repo Clone URL。使用触发器,您还可以检查连接等。
插件的链接:Bitbucket webhooks for Jenkins
此插件的工作原理:
现在配置了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