使用包含所有源资源的git存储库和gulp
/ grunt
构建脚本或composer install
需要在它运行之前运行时,最好的方法是什么将其部署到生产服务器?以下是我提出的一些解决方案:
保留生产阶段的本地副本(运行构建脚本和编译器安装,然后通过ftp部署到服务器)。这似乎不切实际,并为部署过程增加了至少一个额外步骤。
创建分发分支,跟踪那里编译/连接/缩小的文件。这似乎不直观,就像第一个选项一样,为部署过程增加了一个额外的步骤。
使用capistrano或第三方部署工具进入生产服务器,克隆存储库,运行构建脚本并为新安装的版本创建符号链接。这似乎是“最好的”解决方案,虽然它需要对服务器的完全访问权限,并可能具有一些安全隐患。
我一直遇到这个问题,到目前为止,我已经采用了第一个选项(根据我的经验,这更像是手动解决方法)
答案 0 :(得分:0)
我看到的一种方法是将本地构建脚本与简单的git-deployment和使用两个存储库结合起来: src和www。
您的src存储库包含源代码和构建脚本,测试等。
构建在本地运行(composer,grunt,sass,js-min等)并输出'静态'结果转到www repo。
www repo由构建提交并推送到部署远程。
部署远程服务器位于生产www服务器上,带有一个post-receive挂钩,用于检查头部(从/ var / git / yourdomain中的裸仓库)到Web服务器(例如/ var / www / yourdomain)这是一个git工作目录。
它基本上很简单,只有很少的专有技术(除了咕噜声,作曲家和git),但当然细节还需要一段时间才能做好。
我发现建立分支机构是一场噩梦,部分原因是由于git在跟踪文件方面的坚韧性并且不得不避免一些合并。例如,它很难进行构建清理。您必须至少拥有一个单独的www文件夹,您将构建一个基本上重复的任何未编译的后端脚本(如PHP)。版本控制和分支开发。发布有时是不一致的。有两个repos将这个完全分开,并允许您将部署分支部署到不同的网站(例如,staging,prod)。
当然git部署方法意味着你需要" full"访问主机以安装git,钩子并具有ssh访问权限。但大多数Web主机提供ssh访问?
我发现git-deployment非常可靠且无故障。