减少git工作流程中的步骤

时间:2018-08-28 15:58:56

标签: git gitlab githooks

我有以下设置

[dev laptop] -- git push --> [gitlab]
                                 |
                              git pull
                                 |
                                 V
                          [prod server]

以上结果将导致以下工作流程

  1. dev-laptop$ git push gitlab
  2. dev-laptop$ ssh prod-server
  3. prod-server$ cd app
  4. prod-server$ git pull gitlab
  5. prod-server$ pm2 restart app
  6. prod-server$ exit
  7. dev-laptop$ rsync图像和开发人员与生产人员之间的其他二进制文件

如何减少上述步骤的数量?这是我的想法:

  1. 摆脱两者之间的 gitlab ,这样我就可以直接从我的 dev-laptop git push产品服务器强>。但是我不知道该怎么办,甚至不知道怎么办。

  2. gitlab 上设置了一些git hooks,所以当我git pushpost-receive上设置 gitlab { {1}}对产品服务器的更改。然后,在产品服务器上添加一个git push(es) git钩子,以重新启动post-receive。当然,我也不知道该怎么做。

<罢工> 更新:理想情况下,由于我是该项目中唯一的开发人员,因此我希望拥有这样的工作流程

pm2

以上所述,再加上如上所述的一些[dev laptop] -- git push --> [prod server] ,将大大简化我的生活。当然,危险是我没有中央存储库了,所以如果我的 dev笔记本电脑产品服务器瘫痪了,我就没有了备份。但这是我可以选择忍受的危险。

Update2 :拥有中央存储库的安全性非常诱人。

1 个答案:

答案 0 :(得分:0)

要做的事情:

1)首先使您的产品部署一个步骤。我已经看到许多生产站点使用git pull进行更新,但是我认为这是一个错误-它要求它们在生产仓库中以某种方式发生冲突,从而引起问题。而是编写一个类似

的脚本
mkdir deploydir-next
git archive master https://gitlab.com/me/myproject.git | tar -x -C /deploydir-next
pm2 stop app
mv deploydir deploydir-prev ; mv deploydir-next deploydir
pm2 start app
(cd deploydir-prev ; tar czv ../rollback_`date +%Y%m%d%H%M%S`.tar.gz . )
rm -rf deploydir-prev

这会将其关闭足够长的时间,以使您可以非常快速地切换到新代码,该新代码是从当前母版机头的快照派生的。

2)现在您的生产服务器上只有一个deploy脚本,您可以选择:

  1. 准备部署时手动运行
  2. 在计划的升级时间定期运行它(星期一是凌晨5点,因为它可以让您整周修复所有中断,而又不会缩短周末)
  3. 通过(安全!)gitlab webhook
  4. 自动运行它