本来我们部署使用 envoyer, 但是每次在服务器上打包前端资源非常耗时。
某天,envoyer 部署流程中的 npm install && npm run prod
超时错误了。
打包后的前端资源文件如果用 Git 追踪就不用每次在部署时打包了,但是开发时不能在本地打包,否则一不小心就会冲突。
所以考虑利用 lasso 在 Github Action 中打包并上传资源文件到指定位置,部署时只要直接下载即可。
流程
- 安装
composer require sammyjo20/lasso
php artisan vendor:publish --tag=lasso-config
- Git 忽略相关文件
# build files mix-manifest.json public/css/* public/js/* public/static/ # lasso .lasso
- 配置
storage.disk
: lasso 使用 Laravel 的文件系统,所以从config/filesystem.php
中选一块磁盘。storage.upload_to
:如果多个项目使用同一个磁盘,则必须保证这个目录名称唯一。compiler.script
: 部署阶段打包资源的命令,通常是打包前端资源文件。如:CI='' npm run prod
- 在 Github Action job 中添加一项:
php artisan lasso:publish --no-git
- 在部署时运行
php artisan lasso:pull
注意事项
CI=true
构建系统大多会设置此环境变量,来帮助程序检测构建是否发生在 CI 环境中。程序再根据此相应地更改行为,比如将警告当成错误。如果这不是你想要的,你可以在运行打包命令时覆盖此环境变量:CI='' npm run prod
。
Reference
- https://dev.to/alexjustesen/laravel-cicd-pipeline-w-lasso-and-github-actions-53gm