Files
sbroenne__mcp-server-excel/.github/workflows/codeql.yml
2026-09-15 22:46:11 +00:00

83 lines
2.3 KiB
YAML

# GitHub CodeQL Analysis Workflow
# Performs advanced security scanning for code vulnerabilities
name: "CodeQL Advanced Security"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
merge_group:
schedule:
# Avoid the busy start of the hour.
- cron: '23 10 * * 1'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: codeql-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
analyze:
name: Analyze Code with CodeQL (${{ matrix.language }})
runs-on: ${{ matrix.os }}
timeout-minutes: 45
permissions:
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
include:
# Trace the build so source-generated CLI, MCP, and Service code is scanned.
- language: csharp
os: windows-latest
build-mode: manual
- language: javascript-typescript
os: ubuntu-latest
build-mode: none
- language: python
os: ubuntu-latest
build-mode: none
- language: actions
os: ubuntu-latest
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Setup .NET
if: matrix.language == 'csharp'
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
global-json-file: global.json
- name: Initialize CodeQL
uses: github/codeql-action/init@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql/codeql-config.yml
- name: Restore dependencies
if: matrix.build-mode == 'manual'
run: dotnet restore Sbroenne.ExcelMcp.sln
- name: Build solution
if: matrix.build-mode == 'manual'
run: dotnet build Sbroenne.ExcelMcp.sln --no-restore --configuration Release --no-incremental -p:UseSharedCompilation=false
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0
with:
category: "/language:${{matrix.language}}"
wait-for-processing: true