Laravel GitHub Workflow Action缓存Composer依赖失效求助
GitHub Actions Laravel Vendor缓存失效排查方案
核心排查与修复点
缓存路径与键值的精准匹配
确保缓存路径与哈希文件路径完全对应,hashFiles的路径需基于仓库根目录配置,避免使用./前缀减少解析歧义:- name: Cache Composer dependencies uses: actions/cache@v2 with: path: application/vendor key: ${{ runner.os }}-composer-${{ hashFiles('application/composer.lock') }} restore-keys: | ${{ runner.os }}-composer-Composer命令的目录切换验证
执行composer install时必须切换到application目录,否则依赖会被安装到仓库根目录的vendor,导致缓存的application/vendor始终为空:- name: Install Composer dependencies run: cd application && composer install --no-dev --optimize-autoloader缓存上传阶段的内容校验
在首次部署的缓存上传步骤后,添加目录大小检查,确认application/vendor是否有实际内容:- name: Verify vendor directory content run: du -sh application/vendor如果输出为0,说明Composer安装未正确指向目标目录。
哈希值一致性验证
对比本地与Actions环境的composer.lock哈希值:- 本地仓库根目录执行:
git hash-object application/composer.lock - 查看Actions日志中
hashFiles生成的键值部分
若两者不一致,说明仓库中composer.lock存在未提交的隐藏变更(如换行符、空格差异)。
- 本地仓库根目录执行:
缓存版本与权限优化
尝试升级到actions/cache@v3提升路径解析稳定性;若存在权限问题,添加目录权限配置:- name: Set directory permissions run: chmod -R 755 application
内容的提问来源于stack exchange,提问作者Latheesan
相关产品推荐
相关产品推荐

