name: CI on: push: branches: [main] pull_request: jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.13" - name: Install uv uses: astral-sh/setup-uv@v4 - name: Install dependencies run: uv pip install --system -r requirements.txt - name: Run unit tests run: python -m pytest tests/test_db.py tests/test_repositories.py tests/test_migration.py tests/test_permissions.py tests/test_api.py tests/test_api_scripts.py tests/test_cli.py -v env: JWT_SECRET_KEY: ci-test-secret-32chars-minimum!! docker-build: runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - name: Build Docker image run: docker build -t data-analyst:test . - name: Run Docker health check run: | docker run -d --name test-app -p 8000:8000 \ -e DATA_DIR=/data -e JWT_SECRET_KEY=ci-test-secret-32chars-minimum!! \ data-analyst:test sleep 5 curl -f http://localhost:8000/api/health docker stop test-app