推送到BitBucket后自动在生产服务器上拉取代码。

7

我在本地开发代码,将其提交到本地存储库,然后将其推送到我的Bitbucket服务器。之后,我必须通过ssh登录到我的生产服务器,就像这样:

ssh my-server@my-host.de
pass: very-secure-passs
cd www/myPage
cd git pull origin master
pass: very-secure-pass 

我希望避免登录到我的生产服务器并让它自动拉取。我想要有三个仓库(本地、BitBucket和生产服务器),所以我不能使用这个解决方案:在推送到服务器后执行自动拉取请求。我发现了这个问题一个钩子,当我向Bitbucket推送时,允许从VPS“拉”, 这正是我想要的,但它是2013年的,答案已经过时,因为BitBucket从那时起已经改变了。
我在这里找到了一个建议,https://community.atlassian.com/t5/Answers-Developer-Questions/How-can-I-deploy-my-bitbucket-repo-to-my-production-server/qaq-p/565348。有人建议使用一个免费的插件Bitbucket服务器的HTTP请求钩子
设置自动化"Pull": 每次您将代码推送到中央存储库时,您的生产机器都会收到通知并在通知时拉取存储库。Bitbucket Server提供了几个插件来支持通知过程,我使用的是Http Request Post Receive Hook:每次进行推送时,会联系配置的URL,提交一些信息。在我的生产机器上,我设置了一个小型Web服务器,等待HTTP请求。收到HTTP请求后,我评估给定的参数并执行操作(例如:拉取存储库...)
现在我的问题是:
1.是否可以使用Webhook代替HTTP-Request钩子插件?
2.如果要在接收到HTTP请求时进行拉取请求,我的生产服务器上的文件应该如何编写?我对PHP的基本示例感兴趣。

1
如果您的生产服务器提供 ftp,也许您可以通过 git-ftp 解决问题,它声称:Git-ftp -- 以 Git 的方式上传到 FTP 服务器。这意味着在您执行 git push 后,您还需要执行 git ftp push,然后您的生产环境将会被更新。请参见:Git Push into Production (FTP) - tgogos
你应该期待Jenkins(http://jenkins.io/)。你的关键词是“持续集成”和“持续交付”。有一些非常好的工具可以使用,所以你不必手动执行任何操作。 - Spears
2个回答

4
您提供的 Webhook 文档链接是 Bitbucket Cloud(bitbucket.org)的,不是 Bitbucket Server(自托管且具有其他 URL 的服务器)。如果您使用的是 BB Cloud,则 HTTP-Request Hook 插件将无法使用,但您提供的文档可以使用。如果您使用的是 BB Server,那么您可以使用 https://confluence.atlassian.com/bitbucketserver/managing-webhooks-in-bitbucket-server-938025878.html 代替来定义 Webhook。
关于您问题的后半部分 - 如何设置服务器端的 Webhook - 您需要一个小型服务来监听传入的 Webhook,执行所需的身份验证,然后运行您的拉取方法。有很多种方法可以做到这一点,但大多数都会根据您的首选语言和安全设置以及所涉及服务器的网络配置而有所不同。我建议您在 Google 上搜索“Webhook deploy $LANGUAGE”,以了解其他人如何使用您所选择的编程语言执行此操作,或者看看是否有公共存储库、代码片段或示例可供使用。

哎呀,是的,那个链接错了。我有一个BB服务器。我想用SSH密钥编写PHP脚本。有可能只用几行代码就能实现吗?不管怎样,我找到了https://github.com/markomarkovic/simple-php-git-deploy/,我会在接下来的几天里详细阅读它。感谢您的回答! - Adam

0

不要直接尝试在生产服务器上拉取代码,而是可以设置一个 Jenkins 作业,在每次提交时将代码推送到生产服务器。使用 Jenkins,您甚至可以自定义解决方案以匹配提交消息中的特定令牌。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接