# Проверки безопасности: зависимости, секреты, статический анализ name: Security on: push: branches: [main] pull_request: branches: [main] schedule: # Еженедельно по понедельникам 06:00 UTC - cron: '0 6 * * 1' jobs: npm-audit: name: npm audit runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" - run: npm ci - name: Audit production dependencies run: npm audit --audit-level=high continue-on-error: true # не ломать пайплайн; отчёт в логах pip-audit: name: pip audit (Python) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install pip-audit run: pip install pip-audit - name: Audit backend dependencies run: | cd backend pip-audit -r requirements.txt continue-on-error: true secret-scan: name: Secret scan (gitleaks) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Run Gitleaks uses: gitleaks/gitleaks-action@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} with: config-path: .gitleaks.toml continue-on-error: true dependency-review: name: Dependency Review runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - uses: actions/checkout@v4 - uses: actions/dependency-review-action@v4 with: fail-on-severity: high continue-on-error: true