使用git部署Laravel站点而不覆盖现有图像



我目前正在Laravel网站上工作,在那里我使用git-post-rereceive挂钩将我的存储库签出到/var/www。它只是运行git --work-tree=$WEBROOT --git-dir=/var/repo/web.git checkout -f master

到目前为止一切都很好,但我最近添加了将图像上传到网站本身的功能。它们存储在$WEBROOT/public/images/中,我目前一直在那里放置自己的图像。到目前为止,我所有的图片都在git版本控制下(第一个错误?)。现在,每次推送都会覆盖上传到该文件夹的任何文件。我尝试将该文件夹添加到.gitignore并从缓存中删除文件,但似乎不起作用——不管怎样,文件都会被覆盖。

我该如何解决这个问题,有没有更好的方法来完成我想要做的事情?

tl;dr:在我自己用git添加图片之前;我的网站是通过结账来部署的。现在图像是从服务器端添加的,我不希望它们被签出覆盖。

我处理过很多wordpress网站,当人们使用管理面板上传图像或添加/修改插件时,也遇到过同样的问题。我目前的解决方法不是最好的方法,但还是这样。


1.使用CI软件将所有内容提交到Web服务器的主分支
2.将我的主分支签出到Web服务器上的临时分支
3.将临时暂存分支合并回master
4.将合并后的主文件推回到我的存储库服务器,这样我就可以获得直接添加到服务器上的文件


我已安装Jenkins CI(http://jenkins-ci.org/)在带有Git、Gitlab Hook和Git Client插件的Web服务器上,我运行了一个Gitlab服务器(https://about.gitlab.com/gitlab-com/)管理我所有的网站转发。Jenkins和Gitlab都是免费的,但也有付费的替代方案可能效果更好。

我在Jenkins中为我想要的网站设置了一个项目,使用我的Gitlab repo url,将项目设置为签出到一个子目录(我在IIS中的网站webroot),并告诉它签出到特定的分支(暂存),这样它就不会处于分离的头状态。

在"生成环境选项"中,选择"在SCM运行之前运行构建步骤",然后在"执行Windows批处理"命令中输入:
git add--all
git commit-m"添加在git之外添加/修改的本地文件"

下一步,在"生成"选项中再次使用"执行Windows批处理"命令,然后输入:
git签出主机
git合并暂存

在构建后的操作中,我让它将我的主分支推回到Gitlab,这样我的repo就会用实时服务器上的所有文件进行更新。

相关内容

  • 没有找到相关文章

最新更新