【问题标题】:How can I make my web server auto update from my repo?如何让我的网络服务器从我的仓库自动更新?
【发布时间】:2021-11-24 15:14:49
【问题描述】:

我有一个 bitbucket 存储库,其中包含运行我的个人网站所需的所有网站文件。当我对我的主分支进行更改时,有没有办法让我的网络服务器 pc 上的本地文件夹自动同步到我的仓库?我目前正在使用 U 盘来合并 PC 之间的更改,而且工作量更大。

TLDR;基本上,我想编写代码 > 提交给 master > 从 chrome 上的网络服务器加载站点 > 存在更改。

【问题讨论】:

    标签: git directory repo


    【解决方案1】:

    您应该看看 github 操作。我使用这些来确保我所做的每一次提交都没有通过构建和运行单元测试而退化。自动化部署过程也相当简单。

    https://github.com/features/actions

    【讨论】:

    • 我去看看。我也只是对此进行了更多研究。我意识到我可以在我的 Linux 服务器上安装 git,然后有一个 bash 脚本来运行我的同步命令,并将该 repo 的路径设置为 Linux 服务器的文件路径。简单!哈。谢谢。
    【解决方案2】:

    您可以使用 bitbucket 管道(github 操作的 bitbucket 版本)来自动化您的部署过程:

    image: atlassian/default-image:2
    pipelines:
    branches:
      master:
        - parallel:
          - step:
              name: 'Automated Deployment'
              script:
                - curl https://your.web.server.com/automated_deployment.php
    
    • 假设在您的部署 Web 服务器中有 automated_deployment.php 具有这样的内容:
    <?php
    shell_exec('cd /var/www/myproject && git pull');
    

    这样的设置意味着:

    • 无论何时你推送到 master 或当更改从 PR 合并到 master 时,bitbucket 将运行命令:curl https://your.web.server.com/automated_deployment.php
    • 该命令将在您的网络服务器中调用automated_deployment.php,这将调用cd /var/www/myproject &amp;&amp; git pull
    • 这假设您在部署服务器中使用 php。对于其他类型的设置(例如:python/flask/django/node.js),您应该阅读它们各自执行 shell/os 命令的方式

    可能的改进:

    • 将 URL https://your.web.server.com/automated_deployment.php 存储在 bitbucket 存储库变量中(因此相同的 bitbucket-pipelines.yml 文件可用于多个项目)
    • 验证此automated_deployment.php 的客户端证书(因此并非互联网上的每个人都可以在您的服务器上调用https://your.web.server.com/automated_deployment.php(或仅使用秘密密码)
    • 验证 bitbucket 中的最新提交哈希是否与生产服务器中的最新提交哈希相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多