我有以下设置
[dev laptop] -- git push --> [gitlab]
|
git pull
|
V
[prod server]
以上结果将导致以下工作流程
dev-laptop$ git push gitlab
dev-laptop$ ssh prod-server
prod-server$ cd app
prod-server$ git pull gitlab
prod-server$ pm2 restart app
prod-server$ exit
dev-laptop$ rsync
图像和开发人员与生产人员之间的其他二进制文件如何减少上述步骤的数量?这是我的想法:
摆脱两者之间的 gitlab ,这样我就可以直接从我的 dev-laptop git push
到产品服务器强>。但是我不知道该怎么办,甚至不知道怎么办。
在 gitlab 上设置了一些git hooks
,所以当我git push
在post-receive
上设置 gitlab { {1}}对产品服务器的更改。然后,在产品服务器上添加一个git push(es)
git钩子,以重新启动post-receive
。当然,我也不知道该怎么做。
<罢工> 更新:理想情况下,由于我是该项目中唯一的开发人员,因此我希望拥有这样的工作流程
pm2
以上所述,再加上如上所述的一些 [dev laptop] -- git push --> [prod server]
,将大大简化我的生活。当然,危险是我没有中央存储库了,所以如果我的 dev笔记本电脑或产品服务器瘫痪了,我就没有了备份。但这是我可以选择忍受的危险。
Update2 :拥有中央存储库的安全性非常诱人。
答案 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
脚本,您可以选择: