name: CI on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: # 代码检查 lint: name: 代码检查 runs-on: linux container: image: gitea-runner-php:latest steps: - name: 检出代码 run: | git clone -b ${{ github.ref_name }} ${{ github.server_url }}/${{ github.repository }}.git . git checkout ${{ github.sha }} - name: PHP 语法检查 run: | echo "📝 PHP 语法检查..." errors=0 for file in $(find . -name "*.php" -not -path "./vendor/*"); do output=$(php -l "$file" 2>&1) if [ $? -ne 0 ]; then echo "错误: $file" echo "$output" errors=$((errors + 1)) fi done if [ $errors -eq 0 ]; then echo "✅ 所有 PHP 文件语法正确" else echo "❌ 发现 $errors 个语法错误" exit 1 fi - name: 安装依赖 run: composer install --prefer-dist --no-progress --no-interaction # 单元测试 test: name: 单元测试 runs-on: linux container: image: gitea-runner-php:latest needs: lint steps: - name: 检出代码 run: | git clone -b ${{ github.ref_name }} ${{ github.server_url }}/${{ github.repository }}.git . git checkout ${{ github.sha }} - name: 安装依赖 run: composer install --prefer-dist --no-progress --no-interaction - name: 运行测试 run: | if composer test 2>/dev/null; then echo "✅ 测试通过" else echo "⚠️ 测试未配置" fi # CI 状态 ci-status: name: CI 状态 runs-on: linux container: image: gitea-runner-php:latest needs: [lint, test] if: always() steps: - name: 检查结果 run: | if [ "${{ needs.lint.result }}" == "success" ] && [ "${{ needs.test.result }}" == "success" ]; then echo "✅ CI 通过,可以合并" else echo "❌ CI 失败" echo "Lint: ${{ needs.lint.result }}" echo "Test: ${{ needs.test.result }}" exit 1 fi