Skip to content

OCR working good. NER model training ready #18

OCR working good. NER model training ready

OCR working good. NER model training ready #18

Workflow file for this run

name: Quality Gate
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
lint-and-static-checks:
runs-on: ubuntu-latest
strategy:
matrix:
check: [lint, format-check, type-check, security]
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Set up environment variables
run: |
cat > .env << EOF
DJANGO_SECRET_KEY=test-secret-key-for-ci
DEBUG=False
DB_HOST=localhost
DB_NAME=genealogy_extractor
DB_USER=postgres
DB_PASSWORD=postgres
DB_PORT=5432
REDIS_HOST=localhost
REDIS_PORT=6379
DJANGO_SUPERUSER_USERNAME=admin
DJANGO_SUPERUSER_PASSWORD=admin
DJANGO_SUPERUSER_EMAIL=admin@localhost
EOF
export $(cat .env | xargs)
- name: Run ${{ matrix.check }}
run: |
if [ "${{ matrix.check }}" = "lint" ]; then
ruff check .
elif [ "${{ matrix.check }}" = "format-check" ]; then
ruff format --check .
elif [ "${{ matrix.check }}" = "type-check" ]; then
export $(cat .env | xargs)
mypy genealogy genealogy_extractor --config-file pyproject.toml
elif [ "${{ matrix.check }}" = "security" ]; then
bandit -r genealogy genealogy_extractor -f txt -c .bandit
fi
django-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up environment variables
run: |
cat > .env << EOF
DJANGO_SECRET_KEY=test-secret-key-for-ci
DEBUG=False
DB_HOST=db
DB_NAME=genealogy_extractor
DB_USER=postgres
DB_PASSWORD=postgres
DB_PORT=5432
REDIS_HOST=redis
REDIS_PORT=6379
DJANGO_SUPERUSER_USERNAME=admin
DJANGO_SUPERUSER_PASSWORD=admin
DJANGO_SUPERUSER_EMAIL=admin@localhost
EOF
- name: Debug .env file
run: |
echo "Current directory:"
pwd
echo ".env file exists:"
ls -la .env
echo ".env file contents:"
cat .env
- name: Clean up any existing containers
run: |
docker compose down -v || true
docker system prune -f || true
- name: Start database first
run: docker compose up -d db redis
- name: Wait for database to be ready
run: |
echo "Waiting for database to be ready..."
timeout 60 bash -c 'until docker compose exec db pg_isready -U postgres; do sleep 2; done'
echo "Database is ready!"
- name: Start remaining services
run: docker compose up -d --build
- name: Check container status immediately
run: |
echo "Status immediately after startup:"
docker compose ps
echo "Web container logs:"
docker compose logs web
echo "Database container logs:"
docker compose logs db
- name: Wait for services to be ready
run: |
echo "Waiting for services to be ready..."
for i in {1..30}; do
echo "--- Check $i ($(date)) ---"
docker compose ps
if docker compose ps | grep -q "web.*Up"; then
echo "Web service is up! Waiting 5 more seconds for full initialization..."
sleep 5
echo "Final check:"
docker compose ps
echo "Web container logs after waiting:"
docker compose logs web
break
else
echo "Web service not up yet, checking logs:"
docker compose logs web
echo "Waiting 2 seconds..."
sleep 2
fi
done
- name: Run django-check
run: docker compose exec web python manage.py check
- name: Run tests
run: docker compose exec web python manage.py test genealogy.tests