name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: [3.10.x, 3.11.x, 3.12.x] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Cache pip packages uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pytest-cov pytest-xdist - name: Run tests with coverage run: | python -m pytest tests/ -v --cov=domains --cov=ui --cov-report=xml --cov-report=html -n auto - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: file: ./coverage.xml flags: unittests name: codecov-umbrella lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: 3.11.x - name: Install dependencies run: | python -m pip install --upgrade pip pip install ruff mypy bandit - name: Run Ruff linter run: ruff check . - name: Run Ruff formatter run: ruff format --check . - name: Run mypy run: mypy . --ignore-missing-imports || true - name: Run bandit run: bandit -r . -f json -o bandit-report.json || true pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: 3.11.x - name: Install pre-commit run: pip install pre-commit - name: Run pre-commit run: pre-commit run --all-files security: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master with: scan-type: 'fs' scan-ref: '.' format: 'table' - name: Run Trivy vulnerability scanner (SARIF) uses: aquasecurity/trivy-action@master with: scan-type: 'fs' scan-ref: '.' format: 'sarif' output: 'trivy-results.sarif' - name: Upload Trivy scan results to GitHub Security tab uses: github/codeql-action/upload-sarif@v3 if: always() with: sarif_file: 'trivy-results.sarif' continue-on-error: true