我正在使用laravel 5.6。
我当前的代码部署过程如下
- 对文件进行了一些更改
- 提交并将其推到分支。
- 一旦一切都完美地将其合并为掌握和将主分支拉到代码生产服务器(我的代码)。
我的问题
- 如果我有一些由作曲家维持的依赖项。我只是将其添加到当前分支并更改其他文件。
- 当我将其合并到主服务器上时,我需要手动运行Composer Update命令。
- 当我们尝试访问它的依赖类或服务提供商时,服务器会出现错误(因为我们需要在更新作曲家依赖项时将其添加到config/app.php中。
- 更新后,它可以很好地工作。
- 所以我想避免更新作曲家依赖时发生的5-10秒错误。
我有两个选项
- 更新代码时,将应用程序放在维护模式下。 ->我不能那样做。
- 每当有依赖关系使用两个合并上传时。 ->我不想这样做。
是否还有其他最佳实践解决方案解决此问题。
您绝对不应在生产服务器上更新,只需安装作曲家即可。您可以将其连接到合并的git动作,相应地将其部署到生产中(CI/CD,脚本或全手册?)。git钩的文档:https://git-scm.com/docs/githooks这是针对git-hooks post-merge:https://git-scm.com/docs/githooks#_post_merge
避免此问题的最佳部署方法是,每次部署时,都会对新文件夹这样做。然后,部署完成后,您可以切换文件夹。
这可以使用符号链接或类似:
完成deploys
1551270000
1551280000
live > deploys/1551280000
然后进行新的部署(1551290000
):
deploys
1551270000
1551280000
1551290000
live > deploys/1551280000
然后完成后,更改符号链接:
deploys
1551270000
1551280000
1551290000
live > deploys/1551290000
这就是Capistrano和其他人所做的。我建议使用这样的工具,而不是尝试编写自己的工具 - 这个问题已经解决。
当我将其与主合并并将其拉到生产服务器时,我需要手动运行Composer Update命令。
不,你没有。您应该只运行
> composer install
在实时服务器上确保作曲家依赖关系是最新的。