From edfefb3f006c8ea79612324c7d293a43eb321d89 Mon Sep 17 00:00:00 2001 From: Tanya Date: Fri, 16 Jan 2026 15:30:54 -0500 Subject: [PATCH] chore: Enhance CI workflow with detailed linting and type-checking outputs This commit updates the CI workflow to provide more comprehensive output for linting and type-checking processes. It modifies the commands to capture and display results, including error and warning counts, improving visibility into code quality issues. Additionally, it adds new flake8 error codes to ignore in the Python linting command, ensuring a more robust linting process. --- .gitea/workflows/ci.yml | 103 +++++++++++++++++++++++++++++++++++++--- package.json | 2 +- 2 files changed, 97 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 44d0f32..bb6183f 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -109,7 +109,7 @@ jobs: id: eslint-check run: | cd admin-frontend - npm run lint + npm run lint 2>&1 | tee /tmp/eslint-output.txt || true continue-on-error: true - name: Install viewer-frontend dependencies @@ -133,21 +133,60 @@ jobs: id: type-check run: | cd viewer-frontend - npm run type-check + npm run type-check 2>&1 | tee /tmp/typecheck-output.txt || true continue-on-error: true - name: Check for lint/type-check failures if: always() run: | + echo "═══════════════════════════════════════════════════════════════" + echo "📋 LINT AND TYPE-CHECK SUMMARY" + echo "═══════════════════════════════════════════════════════════════" + echo "" + FAILED=false + + # ESLint summary + echo "## ESLint (admin-frontend) Results" if [ "x${{ steps.eslint-check.outcome }}" = "xfailure" ]; then - echo "❌ ESLint check failed" + echo "❌ ESLint check failed (errors found)" FAILED=true + else + echo "✅ ESLint check passed (warnings may be present)" fi + + if [ -f /tmp/eslint-output.txt ]; then + echo "" + echo "### ESLint Output:" + echo "```" + cat /tmp/eslint-output.txt + echo "```" + fi + + echo "" + echo "---" + echo "" + + # Type check summary + echo "## Type Check (viewer-frontend) Results" if [ "x${{ steps.type-check.outcome }}" = "xfailure" ]; then - echo "❌ Type check failed" + echo "❌ Type check failed (errors found)" FAILED=true + else + echo "✅ Type check passed" fi + + if [ -f /tmp/typecheck-output.txt ]; then + echo "" + echo "### Type Check Output:" + echo "```" + cat /tmp/typecheck-output.txt + echo "```" + fi + + echo "" + echo "═══════════════════════════════════════════════════════════════" + if [ "$FAILED" = "true" ]; then echo "❌ One or more checks failed. Failing job." exit 1 @@ -178,27 +217,77 @@ jobs: - name: Check Python syntax id: python-syntax-check run: | - find backend -name "*.py" -exec python -m py_compile {} \; + find backend -name "*.py" -exec python -m py_compile {} \; 2>&1 | tee /tmp/python-syntax-output.txt || true continue-on-error: true - name: Run flake8 id: flake8-check run: | - flake8 backend --max-line-length=100 --ignore=E501,W503,W293,E305,F401,F811,W291,W391,E712,W504,F841,E402,F824,E128,E226,F402,F541,E302,E117 + flake8 backend --max-line-length=100 --ignore=E501,W503,W293,E305,F401,F811,W291,W391,E712,W504,F841,E402,F824,E128,E226,F402,F541,E302,E117,E722 2>&1 | tee /tmp/flake8-output.txt || true continue-on-error: true - name: Check for Python lint failures if: always() run: | + echo "═══════════════════════════════════════════════════════════════" + echo "📋 PYTHON LINT SUMMARY" + echo "═══════════════════════════════════════════════════════════════" + echo "" + FAILED=false + + # Python syntax check summary + echo "## Python Syntax Check Results" if [ "x${{ steps.python-syntax-check.outcome }}" = "xfailure" ]; then echo "❌ Python syntax check failed" FAILED=true + else + echo "✅ Python syntax check passed" fi + + if [ -f /tmp/python-syntax-output.txt ] && [ -s /tmp/python-syntax-output.txt ]; then + echo "" + echo "### Syntax Check Output:" + echo "```" + cat /tmp/python-syntax-output.txt + echo "```" + fi + + echo "" + echo "---" + echo "" + + # Flake8 summary + echo "## Flake8 Results" if [ "x${{ steps.flake8-check.outcome }}" = "xfailure" ]; then - echo "❌ Flake8 check failed" + echo "❌ Flake8 check failed (errors found)" FAILED=true + else + echo "✅ Flake8 check passed (warnings may be present)" fi + + if [ -f /tmp/flake8-output.txt ]; then + echo "" + echo "### Flake8 Output (errors and warnings):" + echo "```" + cat /tmp/flake8-output.txt + echo "```" + + # Count errors and warnings + ERROR_COUNT=$(grep -c "^backend/.*:.*:.* E[0-9]" /tmp/flake8-output.txt 2>/dev/null || echo "0") + WARNING_COUNT=$(grep -c "^backend/.*:.*:.* W[0-9]" /tmp/flake8-output.txt 2>/dev/null || echo "0") + F_COUNT=$(grep -c "^backend/.*:.*:.* F[0-9]" /tmp/flake8-output.txt 2>/dev/null || echo "0") + + echo "" + echo "### Summary Statistics:" + echo "- Errors (E*): $ERROR_COUNT" + echo "- Warnings (W*): $WARNING_COUNT" + echo "- Pyflakes (F*): $F_COUNT" + fi + + echo "" + echo "═══════════════════════════════════════════════════════════════" + if [ "$FAILED" = "true" ]; then echo "❌ One or more Python lint checks failed. Failing job." exit 1 diff --git a/package.json b/package.json index 4099173..d0eeba9 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "lint:viewer": "npm run lint --prefix viewer-frontend", "lint:all": "npm run lint:admin && npm run lint:viewer", "type-check:viewer": "npm run type-check --prefix viewer-frontend", - "lint:python": "flake8 backend --max-line-length=100 --ignore=E501,W503,W293,E305,F401,F811,W291,W391,E712,W504,F841,E402,F824,E128,E226,F402,F541,E302,E117 || true", + "lint:python": "flake8 backend --max-line-length=100 --ignore=E501,W503,W293,E305,F401,F811,W291,W391,E712,W504,F841,E402,F824,E128,E226,F402,F541,E302,E117,E722 || true", "lint:python:syntax": "find backend -name '*.py' -exec python -m py_compile {} \\;", "test:backend": "export PYTHONPATH=$(pwd) && export SKIP_DEEPFACE_IN_TESTS=1 && ./venv/bin/python3 -m pytest tests/ -v", "test:all": "npm run test:backend",