# More info:
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning

name: "CodeQL"

on:
  push:
    branches: ["*"]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: ["*"]
    paths-ignore:
      - '**/*.adoc'
      - '**/*.bash'
      - '**/*.md'
  schedule:
    # Full scan once a week
    - cron: '0 14 * * 3'

permissions:
  contents: read

jobs:
  analyze:
    permissions:
      actions: read  # for github/codeql-action/init to get workflow details
      contents: read  # for actions/checkout to fetch code
      security-events: write  # for github/codeql-action/analyze to upload SARIF results
    name: Analyze
    runs-on: ubuntu-22.04

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        # We must fetch at least the immediate parents so that if this is
        # a pull request then we can checkout the head.
        fetch-depth: 2

    - name: Install dependencies
      run: sudo apt-get update && sudo apt-get install ninja-build elfutils libzstd-dev pkg-config libhiredis-dev

    - name: Initialize CodeQL
      uses: github/codeql-action/init@v3
      with:
        languages: cpp
        queries: +security-and-quality

    - name: Build
      run: ci/build
      env:
        RUN_TESTS: none
        CMAKE_GENERATOR: Ninja
        EXTRA_CMAKE_BUILD_FLAGS: --target ccache

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v3
