bayan-api / .github /workflows /deploy.yml
youssefreda9's picture
CI: Rewrite workflow — lightweight validation without torch/transformers dependency
0087f00
Raw
History Blame Contribute Delete
3.18 kB
name: Bayan CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
validate:
name: Validate Code
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Check Python syntax (all .py files)
run: |
echo "Checking Python syntax..."
find . -name "*.py" -not -path "./.git/*" -not -path "./archive/*" | while read f; do
python -m py_compile "$f" 2>&1 && echo " ✅ $f" || { echo " ❌ $f"; exit 1; }
done
echo "✅ All Python files have valid syntax"
- name: Verify critical files exist
run: |
for f in src/app.py src/model_loader.py src/hf_inference.py src/index.html \
src/nlp/__init__.py src/nlp/spelling/araspell_service.py \
src/nlp/grammar/grammar_service.py src/nlp/punctuation/punctuation_service.py \
Dockerfile Procfile requirements.txt; do
test -f "$f" && echo " ✅ $f" || { echo " ❌ MISSING: $f"; exit 1; }
done
echo "✅ All critical files present"
- name: Verify API routes defined in app.py
run: |
for route in "/api/health" "/api/analyze" "/api/summarize" "/api/spelling" \
"/api/grammar" "/api/punctuation" "/api/quran"; do
grep -q "$route" src/app.py && echo " ✅ $route" || { echo " ❌ MISSING ROUTE: $route"; exit 1; }
done
echo "✅ All API routes defined"
- name: Validate Supabase meta tags in index.html
run: |
grep -q 'supabase-url' src/index.html && echo " ✅ supabase-url meta tag" || exit 1
grep -q 'supabase-anon-key' src/index.html && echo " ✅ supabase-anon-key meta tag" || exit 1
echo "✅ Supabase tags present"
- name: Validate Dockerfile
run: |
grep -q 'EXPOSE' Dockerfile && echo " ✅ EXPOSE directive" || exit 1
grep -q 'gunicorn\|CMD' Dockerfile && echo " ✅ Startup command" || exit 1
echo "✅ Dockerfile valid"
health-check:
name: Post-Deploy Health Check
needs: validate
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- name: Wait for HuggingFace Spaces to deploy
run: sleep 120
- name: Check backend health
run: |
HEALTH_URL="${{ secrets.BACKEND_URL }}/api/health"
if [ -z "${{ secrets.BACKEND_URL }}" ]; then
HEALTH_URL="https://bayan10-bayan-api.hf.space/api/health"
fi
echo "Checking: $HEALTH_URL"
response=$(curl -s -w "\n%{http_code}" "$HEALTH_URL")
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | head -n -1)
echo "Status: $http_code"
echo "Body: $body"
if [ "$http_code" = "200" ] || [ "$http_code" = "503" ]; then
echo "✅ Backend is responding"
else
echo "❌ Backend health check failed"
exit 1
fi