| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- name: Security Scan
- on:
- push:
- pull_request:
- schedule:
- - cron: '0 3 * * 1'
- permissions:
- contents: read
- jobs:
- backend-security:
- runs-on: ubuntu-latest
- timeout-minutes: 15
- steps:
- - uses: actions/checkout@v6
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: backend/go.mod
- check-latest: false
- cache-dependency-path: backend/go.sum
- - name: Verify Go version
- run: |
- go version | grep -q 'go1.27.0'
- - name: Run govulncheck
- working-directory: backend
- run: |
- go install golang.org/x/vuln/cmd/govulncheck@latest
- govulncheck ./...
- frontend-security:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v6
- - name: Set up pnpm
- uses: pnpm/action-setup@v6
- with:
- version: 9
- - name: Set up Node.js
- uses: actions/setup-node@v6
- with:
- node-version: '20'
- cache: 'pnpm'
- cache-dependency-path: frontend/pnpm-lock.yaml
- - name: Install dependencies
- working-directory: frontend
- run: pnpm install --frozen-lockfile
- - name: Run pnpm audit
- working-directory: frontend
- run: |
- pnpm audit --prod --audit-level=high --json > audit.json || true
- - name: Check audit exceptions
- run: |
- python -m pip install 'PyYAML==6.0.2'
- python -m unittest discover -s tools -p 'test_check_pnpm_audit_exceptions.py'
- python tools/check_pnpm_audit_exceptions.py \
- --audit frontend/audit.json \
- --exceptions .github/audit-exceptions.yml
|