Git推动从本地机器部署和复制环境变量

时间:2017-08-29 20:34:02

标签: git bash sh

我已经设置了git push来部署,如图所示here并且它工作得很好但是当需要添加或删除环境变量时,它当前涉及额外的步骤,如此

  1. git push production master - 更新服务器上的源代码,运行部署后任务,重新启动应用服务器

  2. 将production.env复制到生产 - 覆盖production.env,重新启动应用服务器

  3. 我想知道我是否可以“将控制权”传递回启动推送的本地计算机,从本地计算机复制env文件并“返回控制”到生产服务器以运行部署后任务并最终重新启动服务器。所有git帖子都收到钩子?

    或者简而言之,推动部署能够在一个步骤中复制env文件的解决方案。有人知道是否有一个在本地执行的预推钩?

    同样好奇PaaS提供商如何通过网络界面管理env vars,这些环境存储在数据库中并在某些时候导出?

    当前解决方案

    1. git push production master to update source
    2. 执行deploy.sh
    3. deploy.sh(此文件位于本地主机上并在本地执行)

      • 将env文件复制到服务器,如果已存在则覆盖它
      • 在服务器上执行post_deploy.sh

      post_deploy.sh(此文件位于服务器上,并从部署脚本远程执行,如上所述在本地执行)

      • 从最新来源构建应用
      • 重新启动应用

      理想解决方案

      我希望能够跑步 git push production master并执行以下任务,由git post-receive hook或适当的替代方法触发。

      • 通过ssh(scp)将本地服务器复制到服务器
      • 如上图所示运行部署后任务

1 个答案:

答案 0 :(得分:1)

通过尝试解释自己的问题,您可以学到很多东西,结果是在运行推送之前在客户端运行了一个预推挂钩。我在那里添加了预部署任务,它按预期工作。总而言之,最终推送部署设置如下所示

git push production master

这将执行以下操作:

  • 在客户端上运行预推送挂钩并执行预部署任务
  • 在服务器上运行收到后挂钩并执行部署后任务