Files
the_order/.github/workflows/security-audit.yml
defiQUG 9e46f3f316 fix(ci): Update GitHub Actions workflows to fix deprecation and code scanning errors
- Update upload-artifact from v3 to v4 (deprecated)
- Update codeql-action from v2 to v3
- Add continue-on-error to security scan jobs to handle Advanced Security requirement
- Add wait-for-processing: false to code scanning uploads
- Add exit-code: '0' to Trivy scans to prevent failures on vulnerabilities
- Add proper permissions for security-events
- Add conditional checks for file existence before uploading SARIF files
- Update CodeQL analysis to v3 and add error handling
2025-11-10 20:41:38 -08:00

139 lines
3.5 KiB
YAML

name: Security Audit
on:
schedule:
# Run weekly on Monday at 00:00 UTC
- cron: '0 0 * * 1'
workflow_dispatch:
push:
branches: [main]
paths:
- 'packages/**'
- 'services/**'
- 'apps/**'
- '.github/workflows/security-audit.yml'
jobs:
security-audit:
name: Security Audit
runs-on: ubuntu-latest
continue-on-error: true
permissions:
contents: read
security-events: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run security audit script
run: |
chmod +x scripts/security-audit.sh
./scripts/security-audit.sh
- name: Upload security audit report
uses: actions/upload-artifact@v4
if: always()
with:
name: security-audit-report
path: |
security-audit-*.md
security-audit-*.log
retention-days: 30
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
continue-on-error: true
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'HIGH,CRITICAL'
exit-code: '0'
- name: Upload Trivy results to GitHub Security
uses: github/codeql-action/upload-sarif@v3
if: always() && hashFiles('trivy-results.sarif') != ''
continue-on-error: true
with:
sarif_file: 'trivy-results.sarif'
wait-for-processing: false
- name: Run Grype scan
uses: anchore/scan-action@v3
id: grype
continue-on-error: true
with:
path: '.'
fail-build: false
severity-cutoff: high
- name: Upload Grype results
uses: github/codeql-action/upload-sarif@v3
if: always() && steps.grype.outputs.sarif != ''
continue-on-error: true
with:
sarif_file: ${{ steps.grype.outputs.sarif }}
wait-for-processing: false
- name: Check for security issues
run: |
if [ -f security-audit-*.log ]; then
echo "Security audit completed. Review logs for details."
fi
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
with:
fail-on-severity: moderate
codeql-analysis:
name: CodeQL Analysis
runs-on: ubuntu-latest
continue-on-error: true
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
continue-on-error: true
with:
languages: javascript,typescript
- name: Autobuild
uses: github/codeql-action/autobuild@v3
continue-on-error: true
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
continue-on-error: true