name: "CodeQL Advanced Security Scanning"
on:
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]
schedule:
# Weekly security scan on Sundays at 2 AM
- cron: '0 2 * * 0'
workflow_dispatch:
inputs:
languages:
description: 'Languages to analyze (comma-separated: javascript,python,etc.)'
required: false
default: 'javascript'
permissions:
contents: read
jobs:
analyze:
name: CodeQL Security Analysis
runs-on: ubuntu-latest
timeout-minutes: 360
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Setup Node.js
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v4
with:
node-version: '18'
cache: 'npm'
# Initializes the CodeQL tools for scanning
- name: Initialize CodeQL
uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql/codeql-config.yml
# Override language selection by uncommenting this and choosing your languages
# languages: ${{ github.event.inputs.languages || 'javascript' }}
# Install dependencies for better analysis
- name: Install dependencies
run: npm ci
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
- name: Autobuild
uses: github/codeql-action/autobuild@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
# Manual build steps if autobuild fails
# - name: Manual build
# run: |
# echo "Manual build steps would go here"
# # Add your build commands here
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
with:
category: "/language:${{matrix.language}}"
# Upload results even if there are vulnerabilities
upload: true
# Wait for all queries to complete
wait-for-processing: true
dependency-review:
name: Dependency Security Review
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
- name: Dependency Review
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4
continue-on-error: true
with:
fail-on-severity: moderate
allow-licenses: MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0, ISC, 0BSD, Unlicense, LicenseRef-scancode-public-domain
comment-summary-in-pr: always
warn-only: true