我在本地开发代码,将其提交到我的本地repsoitory,然后将其推送到我的Bitbucket服务器。之后我必须通过ssh登录我的生产服务器 像这样:
ssh my-server@my-host.de
pass: very-secure-passs
cd www/myPage
cd git pull origin master
pass: very-secure-pass
我想避免登录我的生产服务器,让他自动拉。
我想拥有3个存储库(本地,BitBucket和生产服务器),所以我无法使用此解决方案:Do an automatic pull request after pushing to server
我发现这个问题A hook that let `pull` from VPS when I `push` to Bitbucket正是我想要的,但是从2013年开始,答案已经过时,因为BitBucket从那时起就发生了变化。
我在这里https://community.atlassian.com/t5/Answers-Developer-Questions/How-can-I-deploy-my-bitbucket-repo-to-my-production-server/qaq-p/565348发现有人建议使用名为HTTP-Request Hook for Bitbucket Server的免费插件
设置一个自动“拉”:每次你推动你的中心 存储库,通知您的生产机器并拉动 通知存储库。 Bitbucket Server提供serval插件 支持通知过程 - 我使用的是Http Request Post 接收挂钩:每次推送时,都会联系已配置的URL, 提交一些信息。在我的生产机器上,我已经设置了一点 Web服务器,等待此HTTP请求。收到后 HTPP-Request I评估给定参数并执行操作 (例如:拉动存储库......)
现在我的问题是:
是否可以使用Webhook代替 HTTP-Request 钩子插件?
我的生产服务器上的文件应该如何显示,以便在收到HTTP-Request时执行拉取请求?我会对PHP中的基本示例感兴趣。
答案 0 :(得分:4)
您链接的webhook文档是针对Bitbucket Cloud(bitbucket.org),而不是Bitbucket Server(它是自托管的,还有其他一些URL)。如果您正在使用BB Cloud,那么HTTP-Request Hook插件将无效,但您链接的文档将会有效。如果您使用的是BB服务器,则可以使用https://confluence.atlassian.com/bitbucketserver/managing-webhooks-in-bitbucket-server-938025878.html来定义webhook。
对于问题的后半部分 - 如何设置服务器的webhook结束 - 您需要一个小型服务来监听传入的webhook,执行您想要的任何身份验证,然后运行您的pull方法。有很多方法可以做到这一点,但大多数方法会根据您的首选语言和安全设置以及相关服务器的网络配置而有所不同。我建议谷歌搜索“webhook deploy $ LANGUAGE”以查看其他人是如何用您的首选语言完成的,或者查看是否有可以使用的公共回购或要点或摘要。
答案 1 :(得分:0)
您可以设置一个Jenkins作业,而不是直接尝试使用生产服务器,该作业将在每次提交时将代码推送到生产服务器。使用Jenkins,您甚至可以自定义解决方案以匹配提交消息中的特定令牌。