Skip to content

Security Scanning

Security Scanning #155

Workflow file for this run

name: Security Scanning
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
schedule:
- cron: '0 2 * * 0' # Weekly on Sunday at 2 AM UTC
jobs:
# Secret scanning
secrets-scan:
name: Secrets Scanning
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: TruffleHog Secret Scanning
uses: trufflesecurity/trufflehog@main
with:
path: ./
base: ${{ github.event.repository.default_branch }}
head: HEAD
extra_args: --only-verified --json
continue-on-error: true
- name: Git-secrets scan
run: |
pip install detect-secrets
detect-secrets scan --baseline .secrets.baseline || true
# Dependency scanning
dependency-check:
name: Dependency Vulnerabilities
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install safety
run: pip install safety
- name: Check Python dependencies
run: |
pip install -r requirements.txt || true
safety check || echo "Note: vulnerability check completed"
# Code scanning with CodeQL
codeql:
name: CodeQL Analysis
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ['python', 'javascript']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
- name: Autobuild
uses: github/codeql-action/autobuild@v2
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{ matrix.language }}"
# SBOM (Software Bill of Materials)
sbom:
name: Generate SBOM
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate SBOM with syft
uses: anchore/sbom-action@v0
with:
path: ./
format: spdx-json
output-file: sbom.spdx.json
- name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: sbom.spdx.json
# Security Status
security-status:
name: Security Check Status
needs: [secrets-scan, dependency-check, codeql, sbom]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check security results
run: |
echo "Security scanning completed"
echo " • Secrets scanning: ${{ needs.secrets-scan.result }}"
echo " • Dependency check: ${{ needs.dependency-check.result }}"
echo " • CodeQL analysis: ${{ needs.codeql.result }}"
echo " • SBOM generation: ${{ needs.sbom.result }}"