我有一个带有ubuntu和一些laravel项目的DigitalOcean VPS,对于我的项目的初始设置,我做了一个git clone,用来自在线存储库的应用程序文件创建一个文件夹。
我在本地机器上进行所有开发工作,在这里我有两个分支(master和develop),我要做的是将开发合并到本地master,然后从master推送到本地存储库。
Nw返回我的生产服务器,当我想将添加到生产中的所有更改添加到生产环境时,我会从源头开始进行git pull,到目前为止,这已经导致git告诉我存储我的更改,为什么?
将更改引入生产服务器的最佳方法是什么?请记住,我的生产服务器本身没有工作目录,我在VPS中所做的只是克隆或将升级推送到生产中。
答案 0 :(得分:4)
您可以看一下CI / CD(持续集成/持续交付)系统。例如GitLab为小型团队提供免费使用计划。
您可以使用手动部署步骤创建管道(将代码合并到master分支后必须按一个按钮),然后使用所需的任何工具来部署代码(scp,rsync,ftp,sftp等)。 )。
最大的好处是,您可以有多个中间步骤(甚至对于工作分支),您可以在其中运行单元测试,从而防止您上传失败的版本(无论何时合并非工作代码)
答案 1 :(得分:3)
对于第一个问题,请在生产中执行git status
,以查看git认为已更改或添加了哪些文件,并考虑将其添加到您的.gitignore
文件中(该文件本身应该是您回购的一部分) )。 Laravel通常具有良好的默认设置,但是您可能在升级Laravel的过程中添加了一些东西或偏离了它们。
对于部署,最佳实践是拥有一致,可复制,可记录和可还原的内容。为此,我建议选择一个部署实用程序。这些通常会做几乎相同的事情:
composer install
,npm run prod
,systemctl restart php-fpm
,软链接共享文件(例如.env
等)以下是一些解决方案,您可以检查所有这些解决方案:
如果您要使用这些实用程序,不一定非要使用CI / CD。您可以使用这些工具来定义管道中的CD步骤,同时仍然可以预先执行其他步骤。