【问题标题】:automatic pull on production server after push to BitBucket推送到 BitBucket 后自动拉取生产服务器
【发布时间】:2018-01-12 05:16:00
【问题描述】:

我在本地开发代码,将其提交到本地存储库,然后将其推送到我的 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 Receive Hook:每次推送时,都会联系一个配置好的 URL, 提交一些信息。在我的生产机器上,我设置了一些 Web 服务器,等待这个 HTTP 请求。在收到 HTPP-Request I 评估给定参数并执行操作 (例如:拉取存储库...)

现在我的问题是:

  1. 是否可以使用Webhook 代替HTTP-Request 挂钩插件

  2. 我的生产服务器上的文件应该是什么样子,以便它在收到 HTTP 请求时执行拉取请求?我会对 PHP 中的基本示例感兴趣。

【问题讨论】:

  • 如果您的生产服务器提供ftp,也许您可​​以使用git-ftp 解决您的问题,其中指出:Git-ftp -- 以Git 方式上传到FTP 服务器。这意味着在您git push 之后,您还必须git ftp push 并且您的生产环境将被更新。见:Git Push into Production (FTP)
  • 你应该期待 jenkins (jenkins.io)。您的关键字是“持续集成”和“持续交付”。周围有一些非常好的工具,因此您无需手动执行任何操作。

标签: php git bitbucket bitbucket-server


【解决方案1】:

您链接的 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,执行你想要的任何身份验证,然后运行你的 pull 方法.有无数种方法可以做到这一点,但大多数会根据您的首选语言和安全设置以及相关服务器的网络配置而有所不同。我建议在 Google 上搜索“webhook deploy $LANGUAGE”,看看其他人是如何使用你的首选语言完成的,或者看看是否有你可以使用的公共 repo 或 gist 或 sn-p。

【讨论】:

  • 哎呀,是的,那个链接是错误的。我有一个 BB 服务器。我想用 SSH 密钥用 PHP 编写脚本。有可能用几行写这样的东西吗?无论如何,我找到了github.com/markomarkovic/simple-php-git-deploy,我会在接下来的几天里更详细地阅读它。感谢您的回答!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多