Laravel7.30/PHP7.4下Github Actions报exit code 1求工作流脚本及教程
GitHub Actions Laravel7 + Vue 工作流修复方案
现有配置报错的常见原因
- 缺少.env配置文件:Laravel运行必须依赖.env文件,现有步骤中没有从.env.example复制生成.env,直接执行
php artisan key:generate会直接抛出异常 - 依赖安装逻辑错误:使用
composer update会忽略项目根目录的composer.lock锁文件,强制升级依赖版本,极易出现版本兼容冲突;额外执行composer require illuminate/contracts会修改项目原有依赖配置,和你本地的Laravel7.30版本不匹配 - 缺少必要PHP扩展:Laravel7运行依赖bcmath、ctype、json、mbstring、openssl、pdo、tokenizer、xml、fileinfo等扩展,配置中未指定安装这些扩展
- 未处理前端依赖:技术栈包含Vue,但现有配置完全没有Node环境安装、前端依赖安装、前端资源构建的步骤,如果你的测试用例涉及前端资源加载会直接报错
- 缺少测试环境配置:默认phpunit测试可以直接使用sqlite内存数据库,不需要额外配置数据库服务,现有配置未指定测试环境的数据库参数
可用的完整工作流配置
name: Laravel Tests on: push: branches: - development pull_request: branches: - development schedule: - cron: '0 0 * * *' jobs: laravel-tests: runs-on: ubuntu-20.04 strategy: fail-fast: true matrix: php-version: [7.4] node-version: [14.x] # Laravel7默认适配的Node版本,兼容Vue常用构建配置 steps: - name: 拉取代码 uses: actions/checkout@v3 - name: 配置PHP环境 uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: bcmath, ctype, fileinfo, json, mbstring, openssl, pdo, tokenizer, xml, sqlite3 tools: composer:v2 coverage: none - name: 复制.env配置文件 run: cp .env.example .env - name: 安装PHP依赖 run: composer install --prefer-dist --no-interaction --no-progress - name: 生成应用密钥 run: php artisan key:generate - name: 配置Node环境 uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: 安装前端依赖 run: npm ci - name: 构建前端资源 run: npm run production - name: 执行单元测试 run: vendor/bin/phpunit --verbose env: DB_CONNECTION: sqlite DB_DATABASE: :memory:
额外注意事项
- 如果你的测试需要用到MySQL、Redis等服务,在steps前添加services配置段,对应启动服务容器即可
- 若执行npm相关步骤时报错,可以尝试将
npm ci替换为npm install,适配不同项目的前端依赖配置 - 排查错误时可以在run命令开头添加
set -x,执行时会打印所有命令的运行日志,快速定位出错的具体步骤
内容的提问来源于stack exchange,提问作者gabriel
相关产品推荐
相关产品推荐

