🏡 index : quine-global-labs/mirror-cockpit-project-cockpit.git

name: CodeQL
on:
  push:
    branches: [main, rhel-*]
  pull_request:
    branches: [main, rhel-*]

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language:
          - python
          - javascript
          # Let's enable these one by one
          #- cpp

    steps:
      - name: Checkout
        uses: actions/checkout@v7

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4.38.2
        with:
          languages: ${{ matrix.language }}
          queries: +security-and-quality
          config-file: ./.github/codeql-config.yml

      - name: Install build dependencies
        run: |
          # disable man-db to speed up package install
          echo "set man-db/auto-update false" | sudo debconf-communicate
          sudo dpkg-reconfigure man-db

          sudo apt-get update
          sudo apt-get install -y --no-install-recommends gettext zlib1g-dev libkrb5-dev libglib2.0-dev libgnutls28-dev libsystemd-dev libpolkit-agent-1-dev libpcp3-dev libjson-glib-dev libpam0g-dev libpcp-import1-dev libpcp-pmda3-dev systemd asciidoctor
        if: ${{ matrix.language == 'cpp' }}

      - name: Build
        run: |
          # disable documentation building as this indirectly triggers a build of pkg/static
          ./autogen.sh --disable-doc
          # only build static/ -- it's the fastest one (just takes a few seconds)
          make -j$(nproc) NODE_ENV=development ONLYDIR=static
        if: ${{ matrix.language == 'cpp' }}

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4.38.2
        with:
          category: "/language:${{ matrix.language }}"