name: Security Scan on: push: branches: [ main, develop ] pull_request: branches: [ main ] schedule: # Run every Monday at 00:00 UTC - cron: '0 0 * * 1' jobs: security-scan: name: Security Scan runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.12' - name: Install dependencies run: | python -m pip install --upgrade pip pip install safety bandit - name: Check for known security vulnerabilities run: | pip install -r requirements.txt safety check --json - name: Run Bandit security linter run: | bandit -r packages/ apps/ -f json -o bandit-report.json || true cat bandit-report.json - name: Upload security reports uses: actions/upload-artifact@v3 if: always() with: name: security-reports path: | bandit-report.json dependency-review: name: Dependency Review runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - name: Checkout code uses: actions/checkout@v4 - name: Dependency Review uses: actions/dependency-review-action@v3